c - 用运算符判断真假
问题描述
又是我……很抱歉问了一些愚蠢的问题,但我是初学者,我真的很想学习编码……所以我有一个问题要意识到为什么这些总是正确的?它与运算符或 C 行为有关的东西是未定义的。?
int x;
int b;
b = 1 < x < 10;
printf("%d%d",b);
char c = 'z';
(c==' ') || (c='\t') || (c=='\n');
printf("%c",c);
为什么那些总是正确的?是因为ASCII码还是什么?
解决方案
常数 10 与布尔表达式的比较结果始终为真
您可以在此处看到C 运算符优先级的表,可以这样读取:
b = ((1 < x) < 10);
因为在 C 等语言中,关系运算符返回整数 0 或 1,其中 0 代表假,任何非零值都代表真。
所以存储在 b 中的值为 1(真)
还:
你没有初始化x
,它应该有垃圾信息(可能!= false)
在你的第二个代码中,你是在分配而不是比较,(c='\t')这是故意的吗?这就是它打印“标签”的原因。
推荐阅读
- python - 使用具有着色器效果的过渡效果时出现 Kivy ScreenManager 错误
- javascript - UnhandledPromiseRejectionWarning:错误:用户密码验证失败
- android - 安卓模拟gps;什么设置可以触发此代码工作?
- c# - 为什么这里需要显式转换
- c++ - 从立方体阵列中删除内部面的最佳方法是什么?
- html - 如果不可用,如何隐藏丑陋的图片?
- typescript - 带有默认参数的打字稿柯里化
- java - 在 Java 中将 String args[] 替换为 int args[] 会发生什么?
- python - 如何用内置替换存储变量?
- php - 如何提交值并显示添加/删除按钮?