本文是对《计算机系统基础》一书中第一章C语言中字面量数据类型认定实验的复现,主要涉及C语言字面量数据类型,gcc编译32位程序两个知识点。重点在于计算机在进行比较时不会先看正负号认定数据类型,而是根据数据绝对值的大小认定。
c语言数值常量的类型
安装gcc多平台编译工具
1 | pacman -S gcc-multilib |
安装32位程序所需的libc库
1 | pacman -S lib32-glibc lib32-gcc-libs |
实验代码
1 |
|
实验结果
关键点在于理解计算机先不管符号,根据2127483648确定类型为unsigned int,再加上符号,对0x80000000进行补码转换又得到0x80000000,由于先前已经确定unsigned int类型,所以比较时,以2147483648(0x80000000)和2147483647(0x7fffffff)比较,满足大于条件,输出false。
参考下文: