C语言
#include <conio.h>void main()
{
double j;
while(1)
{
j = getchar();
if(j=='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
{
printf("是数字!\n");
}
else
{
continue;
}
}
getch();
}
为什么输入任何字符都会打印出“是数字”...... 这个IF有什么问题呀? if(j=='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
if成立的条件是j==‘0' 或者 '1'或者 '2'..........
就是不管j是什么后面|起来的都恒成立
这个if一定成立 这个if语句应该改成if(j>=48 && j<=57) if(j=='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
你只判断j是否等于'0' 然后那些123456789都是数值 不是表达式 简单点说你以为123456789有跟j判断是否相等 实际上没有
c非0为真 后面判断到字符‘1’ = 49 自然就是真的了
你要写的话
楼上说了
if(j >=48 && j <=57)
当然也可以
if(j=='0'||j=='1'||j=='2'||j=='3'||j=='4'||j=='5'||j=='6'||j=='7'||j=='8'||j=='9') 成功了,谢谢大家!
页:
[1]