A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lijiujian 中级黑马   /  2016-3-18 09:29  /  2043 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int  num=0;
printf("请输入一个数字:\n");
scanf(%d,&sum);
if(num = 5){
  printf("恭喜你!\n");
}
if(num != 5){
  printf("很可惜!\n");
}
  return = 0;
上述程序中“if(num = 5)”是故意这么写的 ,我想问的是当输入一个数字以后  为什么输出的只有“恭喜你”而下面的程序没有执行? 谢谢各位朋友了

16 个回复

倒序浏览
首先还是要说千万不要写这样写if(num = 5),一定要用双等于号。现在你的 if(num = 5)中,"="是给num赋值为5了,这个条件是一定成立的了,所以就一定会执行这个分支里的语句。而下面的if(num!=5)条件不满足所以就不会执行下面这个if中的语句啊。
回复 使用道具 举报
“=”与“==”是有很大区别,条件判断的时候,一定要使用关系运算符。
回复 使用道具 举报
nishurudeshiwuma
回复 使用道具 举报
1.在C语言里“=”是赋值,“==”才是正常理解的等于。
2.if函数的判断语句只有真和假,只有为真,永远成立。
回复 使用道具 举报
你的第一个if内判断num = 5等价于true也就是永远为真,且将5赋值给num,后面那个if就是false了,所以没有输出。意思也就是说,你的程序代码:
int  num=0;
printf("请输入一个数字:\n");
scanf(%d,&sum);
num = 5;
  printf("恭喜你!\n");
}
if(num != 5){
  printf("很可惜!\n");
}
  return = 0;
回复 使用道具 举报
chenglei2016 发表于 2016-3-18 17:01
首先还是要说千万不要写这样写if(num = 5),一定要用双等于号。现在你的 if(num = 5)中,"="是给num赋值为5 ...

首先谢谢你,赋值和等于这个注意点我了解,而我故意写成等于,第一个if语句是永远执行的,可是照理说下面的if语句也应该执行啊,可是为什么没打印出来呢?我纠结的地方在这,我是菜鸟 可能没绕过来弯  希望详解
回复 使用道具 举报
外号狐狸 发表于 2016-3-18 22:17
“=”与“==”是有很大区别,条件判断的时候,一定要使用关系运算符。

谢谢  我纠结的不是赋值和等于   而是为什么没执行下面的程序  没有打印
回复 使用道具 举报

先谢谢你  麻烦打汉字
回复 使用道具 举报
喧闹的世界 发表于 2016-3-19 17:37
你的第一个if内判断num = 5等价于true也就是永远为真,且将5赋值给num,后面那个if就是false了,所以没有输 ...

首先谢谢你,然后我是菜鸟,即使第一个if语句是真永远执行,那么第二if语句也应该执行输出 ”很可惜“啊   我纠结在这  麻烦详解
回复 使用道具 举报
因为5是真,if(num=5)相当于:
回复 使用道具 举报
lijiujian 发表于 2016-3-21 09:43
谢谢  我纠结的不是赋值和等于   而是为什么没执行下面的程序  没有打印

第一次if 是将你scanf输入的数字做了一次赋值,就是说 你scanf了之后,不管输入了多少,第一个if就会将5赋值给mun,同时条件为真。执行第一个if语句,当第二次if判断的时候,mun!=5。这个时候mun的值是5了。条件为假,所以不执行
回复 使用道具 举报
赋值与条件判断不一样
回复 使用道具 举报
一个=号是赋值运算符,而if语句里面是比较条件表达返回的是boolean类型要么是true 要么是false 当为true时执行if语句休
回复 使用道具 举报
lijiujian 发表于 2016-3-21 09:50
首先谢谢你,然后我是菜鸟,即使第一个if语句是真永远执行,那么第二if语句也应该执行输出 ”很可惜“啊  ...

第二句是执行了的,问题是你第一句num=5。第二句if判断为false,所以没有输出,你可以试试把第二句改成:if(num !=4)你想要的“很可惜”就有了。
回复 使用道具 举报
喧闹的世界 发表于 2016-3-21 20:51
第二句是执行了的,问题是你第一句num=5。第二句if判断为false,所以没有输出,你可以试试把第二句改成: ...

懂了,我自己有个小弯没转过来,谢谢你啊,可以家好友么
回复 使用道具 举报
外号狐狸 发表于 2016-3-21 16:08
第一次if 是将你scanf输入的数字做了一次赋值,就是说 你scanf了之后,不管输入了多少,第一个if就会将5 ...

非常感谢,自己有个小弯没转过来,加好友?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马