悠然小天最新视频:C的一个小问题

来源:百度文库 编辑:高考问答 时间:2024/05/05 00:08:41
#include<stdio.h>
void main()
{
int a;
scanf("%d",&a);
if (a = a + 2)
a = 1;
else
a = 0;
printf("%d\n",a);
}
这题a = a + 2和a == a + 2都可以用!两者有无差别?

if (a = a + 2)
你应该是说用a=a+2和a==a+2编译都没出错吧?

如果是a=a+2,那是对a进行赋值,
而if 语句是对a=a+2这个语句执行后
a是否为0进行判断.
如果你输入的是-2,
那么此时为假,执行语句a=0;
如果不是-2,那执行语句a=1;

如果使用a==a+2,那是对==两边的值进行比较判断,
这个式子好像是恒为假的哦,
也就是说,不管你输入什么值,
if语句判断的结果不会为真,
不会执行a=1;这个语句.
只执行语句a=0;

if(a=a+2)恒为False

如果a=-2的话if(a=a+2)返回False,否则if(a=a+2)返回True

if (a==a+2)这种写法会留程序死角,既
if(a==a+2)
{
//这里的代码永远不执行
}else{}
if (a=a+2)这种写法没意思,你想表达什么呢?

wuyulun的回答
"若输入a为-2(只要小于等于-2),a+2就是0
此时if表达式为假(只要输入小于等于-2),故输出为0"有误!
wuyulunGG
不是笔误,我的意思很明确if(a=a+2)只有在a=-2的时候才返回False,否则总返回True!

a = a + 2 是赋值语句永远为真
a == a + 2 是条件判断永远为假

当使用a = a + 2时
此时把(a + 2)的结果赋值给a
这个时候if的表达式真假即为a此时的值
若输入a为1a+2就是3
此时if表达式为真(只要输入大于-2),,故输出为1
若输入a为-2,a+2就是0
此时if表达式为假(只要输入小于等于-2),故输出为0

若使用a == a + 2,则结果输出为0

PS:
笔误给楼上的看出来了
若a为-4,a+2自然不是0了
但此时if表达式为假

一个是附值,一个是等式啊
计算机语言交流群:14940080,看简介答对问题就加,欢迎加入

a=a+2
表示赋值,一个简单的例子:a=1,经过a=a+2这个赋值运算后a=3。它就是先运算a+2,再把a+2这个值赋给a,把原来的值给覆盖掉了,即将a的值重写。
a==a+2
这是个逻辑运算,==表示等于,"=="号左边的值是否等于"=="号右边的值。相等返回true,不等返回false