C语言的整数都不一定弄明白

搞了C语言这么多年,就整数类型来说就不一定搞明白,不服的话,看看下面的几道整数测验题,以GCC/LLVM x86/x64为测试平台。

1.表达式1 > 0的执行结果是什么?
A.0
B.1
C.未定义

2.表达式1U > -1的执行结果是什么?
A. 0
B.1
C. 未定义

3.表达式(unsigned short)1 > -1的执行结果是什么?
A. 0
B.1
C. 未定义
D.与编译器的实现有关

4.表达式-1L > 1U分别在x86-64和x86平台上的执行结果是什么?
A. 都为0
B.都为1
C.x86-64平台上为0,x86平台上为1
D.x86-64平台上为1,x86平台上为0

5.表达式SCHAR_MAX == CHAR_MAX的执行结果是什么?
A.0
B.1
C.未定义

6.表达式UINT_MAX + 1的执行结果是什么?
A. 0
B. 1
C. INT_MAX
D. UINT_MAX E.undefined

7.表达式INT_MAX + 1的执行结果是什么?
A. 0 B. 1 C. INT_MAX D. UNIT_MAX E. INT_MIN F.undefined

8.表达式-INT_MIN的执行结果是什么?
A. 0
B.1
C.INT_MAX
D.UINT_MAX
E.INT_MAX
F.未定义

9.假设x为一个int类型变量,表达式x << 0
A.对于所有的x数都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

10.假设x为一个int类型变量,表达式1 << 1
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

11.假设x为一个int类型变量,表达式x << 31
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

12.假设x为一个int类型变量,表达式x << 32
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

13.假设x为一个short类型变量,表达式x << 29
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

14.假设x为一个unsigned类型变量,表达式x << 31
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

15.假设x为一个unsigned short类型变量,表达式x << 31
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

16.假设x为一个int类型变量,表达式x + 1
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

17.假设x为一个int类型变量,表达式x -1+ 1
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

18.假设x为一个int类型变量,表达式(short)x+ 1
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

19.假设x为一个int类型变量,表达式(short)(x+ 1)
A.对于所有的x值都是已定义行为
B.对于部分的数值是已定义行为
C.所有的x值都是未定义行为

答案:1.B 2.A 3.B 4.C 5.B 6.A 7.F 8.F 9.B 10.B 11.B 12.C 13.B 14.A 15.B 16.B 17.B 18.A 19.B

详细解释:https://www.acepace.net/integerQuiz/

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章