Lir*_*una 26
打印%d
将读取整数作为带符号的十进制数,而不管其定义的类型.
要打印未签名的号码,请使用%u
.
这是因为C处理变量参数的方式.编译器只是从堆栈中提取值(键入void*
并指向调用堆栈),并且printf
必须从您给它的格式字符串中找出数据包含的内容.
这就是为什么你需要提供格式字符串--C无法使用RTTI或"基类"(Object
例如Java)来获取泛型或预定义toString
.
int*_*nt3 10
这应该工作:
unsigned int a;
printf("%u\n", a);
Run Code Online (Sandbox Code Playgroud)
说明:在大多数体系结构中,有符号整数用二进制表示.在这个系统中,无论你是使用a 还是a ,小于2**(N-1)
(where N = sizeof(int)
)的正数都以相同的方式表示.但是,如果unsigned int中的数字大于,则表示在二进制补码下的负数有符号数 - 这是在您传递它时给出的.int
unsigned int
2**(N-1)
printf
"%d"
归档时间: |
|
查看次数: |
9435 次 |
最近记录: |