注册 登录
编程论坛 C语言论坛

请问C语言如果条件判断中误写成赋值语句该怎么办

komorebi0110 发布于 2019-11-25 01:42, 2842 次点击
#include<stdio.h>
int main()
{int  number;

number =  0;

if  ( number =  0 )

        printf( "Zero value");
else
printf("Non-zero value");



return 0;
}
9 回复
#2
komorebi01102019-11-25 01:42
输出居然是“Non-zero value” 为什么啊请救救孩子
#3
komorebi01102019-11-25 02:07
是因为expession has value 0所以执行else后的语句的原因吗
#4
c鳌白2019-11-25 09:14
如果expession的值不为零,则表达式为true(1),否则都为false(0)。使用非操作符(!),也可以这样编写:(!expession)或(expession==0).
#5
komorebi01102019-11-25 15:17
回复 3楼 komorebi0110
这个代码里表达式是什么 是number吗
#6
lin51616782019-11-25 16:25
以下是引用c鳌白在2019-11-25 09:14:19的发言:

如果expession的值不为零,则表达式为true(1),否则都为false(0)。使用非操作符(!),也可以这样编写:(!expession)或(expession==0).

没有 表达式的值是多少就多少
不会不是0就true
C没这种神奇的变化
#7
lin51616782019-11-25 16:43
还能怎么办 赋值改为比较呗??
奇怪的问题
#8
komorebi01102019-11-25 17:34
回复 6楼 lin5161678
哈哈,因为我现在大一,是软工专业的,要期中考,题目可能就是给这一串代码,分析结果
#9
wangxinbozj2019-12-02 21:38
我试了一下,将 if( number =  0 ) 语句里的0改为任意一个非零整数,该表达式都为true,输出Zero value
#10
rjsp2019-12-03 08:51
C标准是这么说的:
if( 表达式 ) 语句真 else 语句假
表达式 必须为任何标量类型的表达式。
若 表达式 与整数零比较不相等,则执行 语句真;若 表达式 与整数零比较相等,则执行 语句假。

对于你的代码
if( number = 0 )
    printf( "Zero value");
else
    printf( "Non-zero value" );
会执行哪一句,只要看“number = 0”这个表达式与0相比较的结果就行了。
1