c - 为什么 gcc 使“!(T_MAX+T_MAX+2)”等于 0?
问题描述
对于 gcc 9.3.0,当我尝试将其打印为
int x = 0x7fffffff;
printf("%d", !(x+x+1+1));
它给了我 0。但是当我尝试将其打印为
int temp = (x+x+1+1);
temp = !temp;
printf("%d", temp);
它给了我 1 的预期。怎么了?
解决方案
推荐阅读
- postgresql - 在 PostgreSQL 中,2019-04-23T22:34:40.253-05:00 的日期时间格式是什么?
- python - 如何分组列并返回一个数据框而不是分组对象
- python - 是否有替代方法:as_integer_ratio(),以获得“更清洁”的分数?
- java - 我们是否有任何用于使用 apache poi 在 excel 中取消保护工作表的功能?
- python - 如何仅在实例级别覆盖 __eq__?
- angular - 如何在没有任何安全问题的情况下使用 localStorage?
- javascript - 我无法进入嵌套的 JSON 对象,但只是有时
- excel - 如何修复日期过滤器 VBA,因为它没有选择我范围内的所有日期
- spring-boot - 使用 Spring RestTemplate 获取 JSON 响应对象的一部分
- rx-java2 - Rx2 java,消费者接口不处理错误(套接字超时)。应用程序崩溃