求助,代码见附图
大佬们问一下为什么红圈里的表达式始终返回真???(编译器提示的,实在琢磨不明白了)初学c,想要实现一个输入一个英文字符判断是否大小写。为了简化代码,想直接用连不等号写成一行简短的表达式,不用其它变量参与。
但是如果把红圈内代码替换成 getchar() <= 'Z' 的时候,可以正常运行达到目的。
烦请各路大佬指点。
(第一次发帖,如有违反相关论坛发帖规定的望手下留情) 大概是永远为真,你需要在中键加个且(&&),
不加就是取中间的数值,然后系统会帮你强制转换成bool,>65肯定是真
你加了&&才能算的上判断 C语言没有你说的连不等 2736946915 发表于 2021-9-15 21:17
大概是永远为真,你需要在中键加个且(&&),
不加就是取中间的数值,然后系统会帮你强制转换成bool,>65肯定 ...
不是很懂,我用的关系运算符按理来说整个表达式也应该返回逻辑值啊,假如我输入 'a',值为 97,明显不在表达式范围内,经过关系运算符的运算应该返回是假...而且我连续使用不等号,即使满足 'A' <= , 但是也不满足 <= 'Z'啊。。。 Max472 发表于 2021-9-15 21:29
C语言没有你说的连不等
可是我这里表达的连不等意思就是使用关系运算符 >, <, == 这些,这难道不符合c的运算符使用规则吗?而且我刚刚试了下 表达式3 < 4 < 5 可以返回 1, 3 < 4 > 5 返回的就是 0...可能举上面的例子不够严谨,但是这样写的话c也确实能正确执行想表达的意思... 斐波纳税 发表于 2021-9-15 21:37
不是很懂,我用的关系运算符按理来说整个表达式也应该返回逻辑值啊,假如我输入 'a',值为 97,明显不在 ...
想法是对的,但是表达错了,你这个叫取中间值,所以我才叫你加上&&,这个能把两个逻辑符号连起来 斐波纳税 发表于 2021-9-15 21:37
不是很懂,我用的关系运算符按理来说整个表达式也应该返回逻辑值啊,假如我输入 'a',值为 97,明显不在 ...
即使满足 'A' <= , 但是也不满足 <= 'Z'啊。。。
你这句话你自己不也是分开读的吗,同理,计算机他也要分开,不然他怎么知道你的意思,
2736946915 发表于 2021-9-15 21:46
想法是对的,但是表达错了,你这个叫取中间值,所以我才叫你加上&&,这个能把两个逻辑符号连起来
能讲一下取中间值是什么意思嘛? 2736946915 发表于 2021-9-15 21:47
即使满足 'A'
行啊,这样
Max472 发表于 2021-9-15 21:51
行啊,这样
对我就是想表达这个意思,但是行不通,编译器提示表达式内容永远为真... 斐波纳税 发表于 2021-9-15 21:50
能讲一下取中间值是什么意思嘛?
字面的意思,就是>A,<Z,取中间的数,只要中间数不为01就是true,
或者你可以试试-1<0<1,这个中间值为0,应该就是false了,
我也没试过。。根据经验猜的,因为这样写代码会被打死的,
斐波纳税 发表于 2021-9-15 21:55
对我就是想表达这个意思,但是行不通,编译器提示表达式内容永远为真...
https://www.codeleading.com/article/45993739759/
我之前没想过这个问题,看的视频都是用与把两个与起来,这个网址就可以解决你的问题 斐波纳税 发表于 2021-9-15 21:50
能讲一下取中间值是什么意思嘛?
关于false和true,只有=0才是false,其余都是true,包括负数,系统会帮你强制转换确保正常运行,只不过没在代码里面体现出来 斐波纳税 发表于 2021-9-15 21:55
对我就是想表达这个意思,但是行不通,编译器提示表达式内容永远为真...
其实表达式 'A'<=getchar()<='Z'是合法的,但是由于运算符是从左向右的,所以 不管输入什么 ,'A'<=getchar()返回不是0或1,而0或1都小于'Z',所以'A'<=getchar()<='Z' 永远为 真 所以这样的表达方式不是你的本意 斐波纳税 发表于 2021-9-15 21:50
能讲一下取中间值是什么意思嘛?
看汇编秒懂,得出了一个结论,举个栗子你就懂了
int b =1;
如图-a<0<b;
他这里是取-10~1之间的所有数,把它转换成一个数组,
由于大小的限制,所以只能一直覆盖前面一个元素
也就是说无论你的bool值是由b决定
b-1就是你的值
个人猜测,我也不知道对不对 2736946915 发表于 2021-9-15 21:59
字面的意思,就是>A,
!!!看懂了,我图里写的意思从左往右运算,过第一个关系运算符的时候就已经转换成逻辑值0和1了,这两个值和 ‘Z’ 相比肯定小于 'Z' 且永远成立的,实际上我想要表达的意思计算机没有能够理解... 斐波纳税 发表于 2021-9-15 22:19
!!!看懂了,我图里写的意思从左往右运算,过第一个关系运算符的时候就已经转换成逻辑值0和1了,这两个 ...
开窍了 jhanker 发表于 2021-9-15 22:20
开窍了
我也是看了你的回答才逐渐理解的,恍然大悟,非常感谢!! 我在论坛里有一些源代码下载,你可以下载去改一改,这样学习会快一些
页:
[1]
2