| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1159 人关注过本帖
标题:C++的问题,请解释一下,
只看楼主 加入收藏
yfbn
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:17 
C++的问题,请解释一下,
#include<stdio.h>
void main()
{
int x=10,y=5,z=0;
if(x=y+z)printf("* * *");
else printf("@ @ @");
}
请解释以上为什么在 屏幕上显示的 ***而不是@@@谢谢!

#include<stdio.h>
void main()
{int x=6,y=2,z=10;
if(x<y)
if(y<0)z=0;
else z+=1;
printf("%d\n",z);
}
为什么输出的 结果是10呢、

[此贴子已经被作者于2007-9-7 19:35:37编辑过]

搜索更多相关主题的帖子: 解释 
2007-09-07 18:54
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
x=y+z

= 是赋值

判断:x==y+z

自我放逐。。。
2007-09-07 18:58
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
新手经常范的错误把==写成=

上面除非Y+Z=0,否则都会执行printf("* * *");

雁无留踪之意,水无取影之心
2007-09-07 19:17
yfbn
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-8-12
收藏
得分:0 
1)可以具体解释一下吗?就是说if(x=y+z)在这里是个多余的条件还有else printf("@ @ @");也是多余的吗
把x=y+z改为Y+Z=0程序报错,
2)程序我呢
这两个是习题上的我在电脑中运行了 ,但是我就是想不明白为什么着个答案,请高人指导!
2007-09-07 20:06
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用yfbn在2007-9-7 20:06:51的发言:
1)可以具体解释一下吗?就是说if(x=y+z)在这里是个多余的条件还有else printf("@ @ @");也是多余的吗
把x=y+z改为Y+Z=0程序报错,
2)程序我呢
这两个是习题上的我在电脑中运行了 ,但是我就是想不明白为什么着个答案,请高人指导!

在if()括号判断中,只有0与非0,之分

0,表示否定,那么就不执行if后边的语句(执行else后边的语句)

非0,表示肯定,那么就执行if后比的语句(不执行else后边的语句)

x=y+z :是赋值,从右到左,所以 x=2+10=12(也就是说 x 被重新赋值,不再是6),非0,执行if后边语句

x==y+z :判断,判断语句的,这样的判断值只有2个:0和1 ;6==2+10 吗? 显然不等,所以值这个语句的值为0



至于:把x=y+z改为Y+Z=0程序报错

大小写区分

同时请你注意:

0=y+z也是错,因为常量不能为左值!


自我放逐。。。
2007-09-07 20:16
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我是因为打五笔,打大写容易点,你肯定不能这样了,C语言是区分大写的,当然报错,我也没有要你那么改的意思,只是说按照你写的,只有y+z=0才会输出else printf("@ @ @");

你应该把x=y+z改成x==y+z,1楼不是说了么;

第二个题目,我把代码改一下,和你的效果一样,{}里的没有执行,直接运行PRINTF函数
[CODE]
#include<stdio.h>
void main()
{
int x=6,y=2,z=10;
if(x<y) //如果X<Y则执行{}里的,否则执行{}后面的
{
if(y<0)
{
z=0;
}
else //和最近的IF配对
{
z+=1;
}
}
printf("%d\n",z);
}
[/CODE]

雁无留踪之意,水无取影之心
2007-09-07 20:17
cince
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2007-1-21
收藏
得分:0 


楼上的。。顶你一下。。

呵呵。。说的够明白了

There Is Nothing Impossible In My Dictionary.
2007-09-07 22:51
cince
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2007-1-21
收藏
得分:0 


对于新手来说。最好用使用成对编码来写:
像这样子:

if()
{
...
}
else
{
...
}

尤其是一对对的括号一定要对好

不建议新手使用这样子:
if(...)
...
else
...
这样子自己都会很乱


还有就是:
我举一个简单的例子:
int main()
{
int i,b;
for(i=0;..)
{
...
}
}
这其中呢。

我个人的顺序写法是这样子的:
先写
for(i=0;)
{
}
然后再在前面加上:int i;

前提是:前面得留一行用于声类型的。


以上的纯粹是个人的风格。大家可以参考参考


There Is Nothing Impossible In My Dictionary.
2007-09-07 22:58
jokiye
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-8-27
收藏
得分:0 
= 赋值运算符.
if(x=y+z)的值为真.
2007-09-08 09:56
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下是引用cince在2007-9-7 22:58:55的发言:


对于新手来说。最好用使用成对编码来写:
像这样子:

if()
{
...
}
else
{
...
}

尤其是一对对的括号一定要对好

不建议新手使用这样子:
if(...)
...
else
...
这样子自己都会很乱


还有就是:
我举一个简单的例子:
int main()
{
int i,b;
for(i=0;..)
{
...
}
}
这其中呢。

我个人的顺序写法是这样子的:
先写
for(i=0;)
{
}
然后再在前面加上:int i;

前提是:前面得留一行用于声类型的。


以上的纯粹是个人的风格。大家可以参考参考

支持,我也是这样,写了for(),while(),if(),后面先写一对大括号
打常量字符串,先打引号再写中间



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

2007-09-08 10:19
快速回复:C++的问题,请解释一下,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037535 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved