求问c语言中的合法不合理是什么意思。若我写一个int b,c;scanf c;b=c<28;printf b;得到的结果是多少。小白求问
合法不合理意思就是语法层面行得通,但是逻辑上不对,你给的这个例子我就不解释了,我举一个很常见的错误:
if (a = 0){
// do something
}
这个判断语句很简单,作者的意思可能是要判断a是不是等于0,可是==写成了=,a=0从语法层面讲是永远为true的,编译器也不报错,最多可能给你个警告,但是从逻辑上讲,就失去了判断的意义。这就是所谓的合法不合理吧。
你写的这个可能就是判断输入的值跟28的大小关系吧,如果c>=28。则输出0,否则输出1(或者非0)。这个是我猜的,没有具体上机验证,如有误,请指正……
b 得到的结果是 true 或i false ,
不知道你说的合法、合理是什么意思。假设你说的是C语言语法允许(可以编译),但是会造成错误或者问题的代码。
比如数组越界
int a[10];
a[11] = 1;
这代码可以编译,但是可能出现问题。
再比如
char a[10];
char b[] = "12345678901234567890";
strcpy(a, b); //a的大小不足容纳b
使用没有初始化的指针:
int *a;
scanf("%d", a);
等等。
int b,c;scanf c;b=c<28;printf b;
这代码不合语法,不知道你想表达什么。有时候也要看上下文。
比如 k.sun举例,if (a = 0) ... 这个既可能是==忘记写成=了,也可能是故意这么写,而且完全正确,比如如下代码
while (ch = getchar())
{
...
}
这代码相当于
while (1)
{
ch = getchar();
if (ch == '0') break;
}
而前一种写法更简单。