我从昨天开始学习C,遇到一个问题,但我不知道为什么会发生。
代码是这个
#include<stdio.h>
int a=0;
void main() {
if (a=13) {
printf("Number Is Equal\n");
}
else {
printf("Not Equal\n");
}
}
它应该显示不相等,但仍然显示Number相等,我也尝试了其他数字来代替int a; 如果我分配int a = 13的值,然后运行if(a = 13)语句,则为true,但是如果我在两个地方都用0表示相同,则显示不相等。
答案 0 :(得分:2)
您正在使用分配运算符13
将a
分配给=
。使用==
进行比较。
示例:
int a=0;
void main()
{
// Here, a is being checked to see if it is equal to the int 13.
// a=13 would be assigning 13 to a, and then checking to see if
// a is "truthy", or, not 0, which is why it was true for you every time.
if (a == 13) {
printf("Number Is Equal\n");
}else{
printf("Not Equal\n");
}
}
注意:C标准指定
main()
在托管环境中时将返回类型int
(例如int main(){return 0;}
)。您可以与此不同当您处于独立环境中时,这将由实现定义。您不太可能使用独立式环境。奇怪的是,您处于托管环境中,对于void
使用类型main
会违反C标准。
答案 1 :(得分:0)
这里
int a=0;
if (a=13) { }
它应该显示不相等吗?
否,由于赋值if
非零,a=13
条件始终为true,您需要改用==
。
更改此
if (a=13) { } /* = is assignment operator, condition remains always true */
到
if (a == 13) {} /* use comparison operator == */
答案 2 :(得分:0)
您正在编写a=13
,它将值13分配给a。由于该值非零,因此也被视为true(零将转换为false)。
您应该使用双等号写a == 13
进行比较。