【C语言】每日一题---1

大家好,我是苏貝,本篇博客是系列博客每日一题的第一篇,本系列的题都不会太难,如果大家对这种系列的博客感兴趣的话,可以给我一个赞👍吗,感谢❤️


下面代码的结果是:

c 复制代码
#include <stdio.h>
int i;
int main()
{
    i--;
    if (i > sizeof(i))
    {
        printf(">\n");
    }
    else
    {
        printf("<\n");
    }
    return 0; 
}

A.>

B.<

C.不输出

D.程序有问题

答案:A

解析:全局变量,没有给初始值时,编译其会默认将其初始化为0。所以 i- -后 i = -1,是不是马上认为-1<sizeof(int)=4,所以选择了B?但是sizeof的返回类型是size_t,是无符号整数。因此编译器会自动将左侧i转换为无符号整形的数据,当-1 被解析为有符号数时,高位置为1,表示这个数是负数。当它被解析为无符号数时,高位的1 被当做2 的乘幂,所以仅这一位置,就有2^31,远远大于4,所以这道题的答案选A。这道题其实很隐蔽,真是虾仁猪心!!!


好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

相关推荐
你怎么知道我是队长几秒前
C语言---未定义行为
java·c语言·开发语言
没有bug.的程序员13 分钟前
Java 序列化:Serializable vs. Protobuf 的性能与兼容性深度对比
java·开发语言·后端·反射·序列化·serializable·protobuf
Clarence Liu37 分钟前
AI Agent开发(2) - 深入解析 A2A 协议与 Go 实战指南
开发语言·人工智能·golang
业精于勤_荒于稀1 小时前
异常梳理aaaa
开发语言·qt
黎雁·泠崖1 小时前
Java面向对象:对象内存图+成员与局部变量
java·开发语言
sunfove1 小时前
实战篇:用 Python 徒手实现模拟退火算法解决 TSP 问题
开发语言·python·模拟退火算法
jiunian_cn1 小时前
【C++】IO流
开发语言·c++
froginwe112 小时前
C 语言输入与输出详解
开发语言