为什么if语句中a=1时结果是1,当a==1时结果为0,求大神

#include<stdio.h>
main()
{int a;a=2;
if(a=1)
printf("1\n");
else printf("0\n");
}
有什么区别,感觉就是一样的

C语言的=和==是不一样的含义。
似乎=是赋值的意思,而==是比较==两边的变量是否完全一致,
如果a=“1”,那么aa==1的结果就是0,因为a是字符串,而1是数值。追问

那为什么a=1时结果为1呢,谢谢

追答

=是赋值的意思(我记得好像是这样子的啊)
这样的话a=1一定会成功的。
就类似于if 2(不是0的任意数字),那么这个的值一定是true,也就是1.

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-16
a=1是赋值语句,意思是把1赋给a,不管他以前是多少现在a的值是1。
a==1是逻辑判断的,如果a的值真的是1,表示结果为真(true),返回1;要是a的值不等于1,表示结果是假,返回0。追问

因为1代表真,所以就为输出1了

为什么if语句中a=1时结果是1,当a==1时结果为0,求大神
如果a=“1”,那么aa==1的结果就是0,因为a是字符串,而1是数值。

if(a=1)和if(a==1)有什么区别?
那么if(1)其实就是if(true)就是条件为真。而 if(a==1) 是判断a是否等于1,这里a可以为左值,也可以是右值。

if(a==1)和if(1==a)的区别?
后者if(1==a) 应该是 一些程序员 想出的好方法 因为 写if判断的时候 经常少个等于号 变成赋值,但是编译器不能发现这个错误,但是结果是不对的,这就让程序员们很蛋疼了 几千几万行的代码 怎么办 所以有些人养成这样的习惯if(1==a) 少个等于号 会报错的 因为赋值语句 左边不能是常数...

if((A&0x01)!=0)A1=1;else A1=0; 帮忙解释下。
0x01是00000001,0x表示十六进制,&是双目运算符“与”的意思,A&0x01一般表示A(应该是某个变量)与00000001的相与。比如说,如果A赋值84的话,转换为二进制是01010100,与00000001想与,就是00000000。也就是十进制的0.if(A与00000001的与运算不为零)A1=1;else A1=0;...

C语言中if(a==1)和if(a=="1")的区别?
类型不一样,1表示数值型,要用int定义a "1"表示字符型,定义a变量时要用char 之前可以用ASCII码来转换,不过不是一一对应关系,要查下对照表,

...0 1 a1中内容是A时为判断为1,但单元格中显示为0,请高手帮忙指点,如 ...
if(logical_test,value_if_true,value_if_true)if的用法 如果条件logical_test 成立 则取真值 value_if_true 如果条件logical_test 不成立 则取假值 value_if_true 如果A1的内容是A 时判断为1,不是A则显视为0 可以在另一单元格中输入 ”=IF(A1=A,1, 0)“...

如何让一个公式中数据正确时返回1,错误时返回0?
=IF(B1="",0,A1-B1)说明:如果B1为空,则结果为0,否则结果为A1-B1。=IFS(B1="",0,A1=1,1)说明:如果B1为空,则结果为0,并且如果A1=1,则结果为1。以上这些函数都是当数据符合条件的时候可以自定义计算结果为某一个值的。通过例子看一下,图1为公式比较,图2为结果比较:

C语言中的if语句问题:
先解释代码运行结果为什么是:a=1,b=0,c=1 因为if里面的条件是短路条件。因为 ++a>0 是true,所以不再执行 后面的++b>0 了。因此,b的值没有变。你的选择题答案是B,因为 A 中 1 默认是int,而另外的三个变量也都是 int变量。因此表达式最后的结果也会是int型的,也就是说最后的结果是...

C语言中相等判断“if(a==1)”与“if(1==a)”的区别在哪?哪个更规范...
本质上没区别。郝斌认为if(a==1)不好的原因是:if(a==1)很容易误写成if(a=1),并且即使写成if(a=1)编译器也不会报错,我们不容易找出程序的错误。但如果我们把if(a==1)写为if(1==a)后虽然意思没变,但当我们少写一个等号时if(1=a),编译器会报错,这样我们就很容易找出我们程序的...

C语言 if(a == "1") 判断字符串a是否等于1 这样写貌似不对 应该怎么...
如果a是字符的话,改成单引号就可以了 if(a == ‘1’)如果a是字符串。if(strcmp(a,"1") == 0)

相似回答