int i = -20; unsigned j = 10; i+j 的值为多少?为什么?
时间: 2023-08-31 13:34:01 浏览: 117
### 回答1:
i j 的值分别为 -20 和 10。i 是有符号整数,其值为 -20,j 是无符号整数,其值为 10。在进行运算时,i 会被转换为无符号整数,因为 j 是无符号整数,所以 i 的值会被解释为一个非常大的正整数,然后 j 的值会被加上去,最终结果会是一个非常大的正整数。
### 回答2:
int i = -20; unsigned j = 10;
i 的值为 -20 ,因为 i 的类型是 int ,可以存储负数。
j 的值为 10 ,因为 j 的类型是 unsigned(无符号 int),只能存储非负整数。无符号类型的变量不可以存储负数,如果给无符号类型的变量赋值一个负数,它会先将该负数转换成对应的正数再存储。对于无符号整数类型,转换方式是通过 "取模" 操作,即将负数加上无符号整数类型能表示的最大值再加 1,直到结果在该无符号类型的范围内为止。
所以,-20 + UINT_MAX + 1 = -20 + 4294967295 + 1 = 4294967296 - 20 = 4294967276 ,这就是 j 的值。
### 回答3:
int i = -20; unsigned j = 10; i j 的值分别为 -20 和 10。
首先,int 是有符号整数类型,可以表示正数、负数和零。而 unsigned 是无符号整数类型,只能表示非负数和零,不包括负数。
对于 i = -20,它的值就是 -20,因为 i 是有符号整数,可以表示正负数和零。
对于 j = 10,它的值就是 10,因为 j 是无符号整数,只能表示非负数和零,不包括负数。
因此,i 的值为 -20,j 的值为 10。