一道不明白的c语言题目。

来源:百度知道 编辑:UC知道 时间:2024/06/30 00:28:17
#include <stdio.h>
main()
{
int a=-1;
printf("%d,%o,%u\n",a,a,a);
}
输出的后面两个未什么会这样?

O格式符:以八进制格式输出整数。

U格式符:以十进制输出无符号数。

-1在内存中是以补码形式存放的(整型32位):1111 1111 1111 1111 1111 1111 1111 1111,所以经过转换后为:
37 777 777 777,
4 294 967 295(没有空格)。

%o是八进制输出,
%u是无符号的整形、
建议首先你应该了解一下,计算机中补码的表示,也就是负数的存储方式。
然后从再研究一下进制之间的转化就可以了。

后面两个就是把int型的a强制转换为8进制和无符号整形了

前一个%o是八进制输出,后一个%u是无符号的整形输出吧。

177777,65535 分别是八进制和无符号整型输出

你说的是什么样呀。