【发布时间】:2016-06-24 08:17:43
【问题描述】:
我知道 unsigned int* 和 int* 不兼容。但是由于 i,j 是 int* (int 指针),那么它们是如何使用无符号类型打印的。为什么输出为0!!
#include<stdio.h>
//#include<conio.h>
main()
{
int *i,*j,**k;
//i+2;
k=&i;
printf("\n*k=%u j=%u i=%u",*k,j,i);
//getch();
}
输出:
*k=0 j=0 i=0
这是 295 个 C 问题中的问题之一,我只是想了解这段代码中发生了什么!这段代码不是我写的!
【问题讨论】:
-
在未初始化时使用具有自动存储持续时间的对象的值的未定义行为,将错误类型传递给
printf()的未定义行为。 -
这里真正的问题是
i和j都没有定义,因此*k也没有定义。您所做的只是打印未定义的值。至于格式,你是对的,%u应该传递一个unsigned int。 -
使用正确的格式说明符来打印指针。阅读此链接。可能对你有用..stackoverflow.com/questions/9053658/…
标签: c pointers int unsigned-integer