C语言渡劫!if语句有返回值?一般的表达式有返回值没?
今天一哥们问我if(x=y)&&(x!=0)x+=y;是对的吗?不是if((x=y)&&(x!=0))x+=y哦
是利用if(x=y)的返回值,不是x=y的。
我乱了,我C语言高手的形象完全被破坏了。
所以来问一下 if语句有返回值吗? C语言一般的表达式都有返回值没?
我知道x=y的返回值是y的值。对不?
[解决办法]
if(x=y)&&(x!=0)x+=y;
VC6.0下编译不通过
[解决办法]
嗯很负责任的告诉你
- C/C++ code
if(x=y)&&(x!=0)x+=y;
[解决办法]
编译都通不过,说明这样的不正确,也就说明if没有返回值啊。if只是个选择判断流程语句
[解决办法]
C语言里所有的表达式都有类型,都有返回值
但就
if(x=y)&&(x!=0)来说,这是个有语法错误的语句,更没有什么返回值了
[解决办法]
if是控制谓词,是没有返回的,同样的for while都是没有返回的...你可以当它们看成不是表达式.事实上它们也的确不是表达式.
[解决办法]
实践了下,代码:
- C/C++ code
#include <stdio.h>#include <string.h>int main(){ printf("%d\n", if (5 = 3)); return 0;}
[解决办法]
if是控制留语句其本身没有返回值的,while、switch、goto也类似。if的的工作过程是if(expression)....根据expression的计算结果决定转向。expression是指有返回值的任何表达式,逻辑判断表达式,变量表达式,函数返回表达式,算式等等,都可以作为expression内容,关键的是expression要有返回值。但并不是任何expression 都有返回值。
[解决办法]
写这样的代码,要让别人改的话,会被骂死。。。。。
[解决办法]
[解决办法]
expression是有返回值的,或者理解成结果值
statement则没有返回值
中文的话,表达式是有返回值的,而语句则没有, if是一个语句而非表达式