读书人

C语言渡劫!if话语有返回值?一般的表

发布时间: 2012-08-17 02:08:34 作者: rapoo

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只是个选择判断流程语句

探讨

我知道编译不过啊 疑问不是这个。是if语句有返回值没
引用:

嗯很负责任的告诉你
C/C++ code
if(x=y)&&(x!=0)x+=y;

编译不过去

[解决办法]
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 都有返回值。
[解决办法]
写这样的代码,要让别人改的话,会被骂死。。。。。
[解决办法]
探讨

引用:

C语言里所有的表达式都有类型,都有返回值

但就
if(x=y)&&(x!=0)来说,这是个有语法错误的语句,更没有什么返回值了


"C语言里所有的表达式都有返回值" -- 有出处吗?

[解决办法]
expression是有返回值的,或者理解成结果值

statement则没有返回值

中文的话,表达式是有返回值的,而语句则没有, if是一个语句而非表达式

读书人网 >C语言

热点推荐