Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C中不存在的ASCII字符转换为int_C_Type Conversion - Fatal编程技术网

将C中不存在的ASCII字符转换为int

将C中不存在的ASCII字符转换为int,c,type-conversion,C,Type Conversion,我从中得到了“1”,我想知道为什么大部分int有32位,而char只有8位。如果将int转换为char,则会丢弃剩余的24位。未定义结果。i已定义int(32位)二进制值为65537=100000000000001 当c=(char)i时,值被截断,因为c是8位的,所以 c将是c=00000001so c=165537%256=??;)您要打印整数的第一个字节,它取决于您的计算机(从MSB或LSB读取)“65537%256=??”这意味着什么?结果已定义,实现定义。不,您错了,如果更改常量该怎么

我从中得到了“1”,我想知道为什么大部分int有32位,而char只有8位。如果将int转换为char,则会丢弃剩余的24位。未定义结果。

i
已定义
int
(32位)二进制值为
65537=100000000000001
c=(char)
i时,值被截断,因为c是8位的,所以
c将是
c=00000001
so c=1

65537%256=??
;)您要打印整数的第一个字节,它取决于您的计算机(从MSB或LSB读取)“65537%256=??”这意味着什么?结果已定义,实现定义。不,您错了,如果更改常量该怎么办?我们可能也会得到负面信号。我说它是未定义的,因为输出与输入无关。但是你可以计算它。另外,不要忘记endian字节顺序。你不知道你在运行哪个平台。Big-endian和little-endian将产生不同的答案。任何整数类型到有符号类型的转换都是由实现定义的。标准没有定义端点,也与此处无关。请参阅标题6.3.1.3§3中的现行标准,请仔细阅读我的评论。我说结果没有定义。我说的只是结果。标准是不相关的。这只是实现它的一种方式。结果可能不同。
int i = 65537;
char c = (char) i;
printf("%d", c);