问个问题,C语言的,关于if语句中条件判断是一个赋值语句问题。

问个问题,C语言的,就是int x=5; if(x==5) K=2;这句话意思是:当x确实等于5,即if判断条件为真,然后执行 k=2; 那假如这样 if(x=5) K=2;我为x赋值5,这个if的判断条件为真么?可以执行k=2;么?那假如 if(x=0) k=2;还执行么?
我用的编译器是vc6.0

复制表达式x=5本身是有值的,这个值等于左值。也就是说x=5这个式子的值是x,也就是5。而x=5这个式子的值是5不为零,就是真的,还会执行k=2。
一般来说,if后面语句是禁止使用单等于号,也就是赋值号的,就是为了防止出错。
980515024 这位回答的有错误。if(x=5)编译是不会报错的。
如果是x=0,这个表达式的值就是0,也就是假的,就不执行后面的语句了。用什么软件编译无所谓,6.0还是dev还是vs08都行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-11
赋值语句永远是真,所以要执行
优秀的程序员就需要养成好的习惯,最好判断语句写成if(5==x),即使误输入少了一个“=”,即if(5=x),这样编译时会报错,若写成if(x==5),误输入为if(x=5),程序将继续,大程序查错就困难
第2个回答  2010-11-11
对于if语句既然你知道里面的判断语句是表达式,那么当你要在该语句中为变量赋值时就应该知道赋值的规则啊!赋值和相等时不一样的!如你所问:if(x=5)这是错误的,编译器是不会认同这样的表达式,因此认为是假,不执行k=2,下面的一样!
第3个回答  2010-11-11
个人感觉这里的“=”是赋值符号,将等于号后面的值赋给了x这样if必然成立,随后由于if的条件成立这样很正常的就会输出K的值了,个人观点
第4个回答  2010-11-11
赋值运算返回左值
x=5 返回5 true
x=0 返回0 false

问个问题,C语言的,关于if语句中条件判断是一个赋值语句问题。
一般来说,if后面语句是禁止使用单等于号,也就是赋值号的,就是为了防止出错。980515024 这位回答的有错误。if(x=5)编译是不会报错的。如果是x=0,这个表达式的值就是0,也就是假的,就不执行后面的语句了。用什么软件编译无所谓,6.0还是dev还是vs08都行。

c语言中if语句条件为赋值语句
当if语句中的条件为赋值语句时,实际上是将赋值后的结果与0进行比较。比如下面的代码:include <stdio.h>int main(){int a;if (a = 0) printf("hello world\\n");return 0;}它等价于:include <stdio.h>int main(){int a = 0;if (a==0) printf("hello world\\n");return 0;}这个...

C语言,if(表达式)中,表达式如果是一个赋值语句,这个if就会恒真吗?
这个语句没有语法错误(可能会有警告),是可以执行的。但是这个语句永远没有机会执行else部分。a=5赋值表达式的计算结果就是5,当这个表达式出现在if语句逻辑表达式位置上的时候,它的计算结果是被当作逻辑值处理的,在C语言中用整型数表示逻辑量,非零表示“真”,所以这是一个永真式;这个if的逻辑条件...

当C语言中if语句中的条件表达式为常量或赋值表达式时的意义,分别举例解 ...
\/\/我举个例子你就明白了\/\/赋值运算符=运算优先级是从右到左,然后看下面代码int a,b;b = (a=1);\/\/编译器编译得到如下代码:movDWORD PTR _a$[ebp], 1moveax, DWORD PTR _a$[ebp]movDWORD PTR _b$[ebp], eax①a=1②b=a如此推断,(a=1)的值即a的值,而a的值为1所以if(1)不用...

c语言if语句问题。。。
if(a=12)注意这里是a=12,而不是a==12,所以if里面是一个赋值,赋值表达式的返回值就是所赋的值,所以if为真,并且a=12这样后,a被赋值为12 再执行a=a+1;b=b+1;就得到13;1了

C语言中有关if语句的问题
%d\\n",x,y);\/\/输出结果是20 20 } if(x==y)\/\/判断==两边的值是否相同 x是10,y是20,肯定不同 返回假 t=x;\/\/因为返回时假 所以这句不执行 x没有能赋值给t 所以t的值还是0 x=y;\/\/y赋值给x x的值为20 y=t;\/\/t的值赋值给 y t为0 所以y变成了0 输出结果为20 0 ...

c语言中,当判断语句为赋值语句时,会如何?
恒真,判断结果一直为真;其实还要看你赋值语句对不对,赋值语句成立,可以成功赋值,则为真,不成立,无法赋值则为假。

c语言选择结构if()括号里面跟表达式 常数时的意思?有例题
if(0) -- 0 就是“假”。“假”执行 else{} if (x=y+z) -- 这里是赋值语句,不是表达式,所以总是得真。于是执行printf("+++++");if (x==y+z) 里面才是条件表达式

C语言,if语句中的条件表达式对某一变量进行运算赋值,该变量在if语句外...
不是原值,if里面跑到多少是多少,另外,你这个程序结果应该是3,感觉。PS:你的i++=0应该改成i++==0; 这里面等号是用来赋值的,==才是数学中常用的等号。

C语言里的if语句里的条件能不能是输入型的
可以的。C语言中if(条件)语句判断的是条件是否非0。是0则不执行后续的条件语句,非0则执行。例如:if(a==0) {XXXX} 那么,当a等于0时,这个式的值为1,执行XXXX 而if(a=0) {XXX} ,a=0是赋值语语,该式的值恒为0,永远不会执行XXX 所以如果(条件)语句中的输入函数是有返回值的...

相似回答