C语言编程有符号和无符号整型变量显示问题

小弟初学乍练,敲了下面一行代码,但是无符号和有符号型的变量显示都是-10,不知道问题出在哪,请大侠指教:
#include<stdio.h>
int main()
{
unsigned int i = -10;
signed int j = -10;

printf("%d\n",i);
printf("%d\n",j);
}

#include <stdio.h>
int main()
{
unsigned int i=-10;
printf("%u\n",i);
return 0;
}


//注意下面第 42行

printf
语法:
 #include <stdio.h>
 int printf( const char *format, ... );

   

printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.

字符串format(格式)由两类项目组成 - 显示到屏幕上的字符和定义printf()显示的其它参数. 基本上,  你可以指定一个包含文本在内的format(格式)字符串,也可以是映射到printf()其它参数的"特殊"字符. 例如本代码
   char name[20] = "Bob";
   int age = 21;
   printf( "Hello %s, you are %d years old\n", name, age );

显示下列输出:
   Hello Bob, you are 21 years old

%s 表示, "在这里插入首个参数,一个字符串." %d 表示第二个参数(一个整数)应该放置在那里. 不同的"%-codes"表示不同的变量类型, 也可以限制变量的长度.

Code     格式    

%c     字符    

%d     带符号整数    

%i     带符号整数    

%e     科学计数法, 使用小写"e"    

%E     科学计数法, 使用大写"E"    

%f     浮点数    

%g     使用%e或%f中较短的一个    

%G     使用%E或%f中较短的一个    

%o     八进制    

%s     一串字符    

%u     无符号整数    

%x     无符号十六进制数, 用小写字母    

%X     无符号十六进制数, 用大写字母    

%p     一个指针    

%n     参数应该是一个指向一个整数的指针
指向的是字符数放置的位置
   

%%     一个'%'符号    

一个位于一个%和格式化命令间的整数担当着一个最小字段宽度说明符,并且加上足够多的空格或0使输出足够长. 如果你想填充0,在最小字段宽度说明符前放置0. 你可以使用一个精度修饰符,它可以根据使用的格式代码而有不同的含义.

用%e, %E和 %f,精度修饰符让你指定想要的小数位数. 例如,

   %12.6f


将会至少显示12位数字,并带有6位小数的浮点数.

用%g和 %G, 精度修饰符决定显示的有效数的位数最大值.
用%s,精度修饰符简单的表示一个最大的最大长度, 以补充句点前的最小字段长度.
所有的printf()的输出都是右对齐的,除非你在%符号后放置了负号. 例如,

   %-12.4f

将会显示12位字符,4位小数位的浮点数并且左对齐. 你可以修改带字母l和h%d, %i, %o, %u和 %x 等类型说明符指定长型和短型数据类型 (例如 %hd 表示一个短整数). %e, %f和 %g 类型说明符,可以在它们前面放置l指出跟随的是一个double. %g, %f和 %e 类型说明符可以置于字符'#'前保证出现小数点, 即使没有小数位. 带%x类型说明符的'#'字符的使用, 表示显示十六进制数时应该带'0x'前缀. 带%o类型说明符的'#'字符的使用, 表示显示八进制数时应该带一个'0'前缀.

你可以在输出字符串中包含 连续的Escape序列.

printf()的返回值是打印的字符数,如果发生错误则返回一个负值.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-23

#include<stdio.h>

int main()

{

unsigned int i = -10;

signed int  j = -10;

printf("%u\n",i);

printf("%d\n",j);

}



%u 才是输出无符号数的格式

第2个回答  2013-12-23
在输出i的时候不应该用%d,如果是%d的话会牵涉到强制转换,写成%u就可以了
第3个回答  2013-12-23
编译系统无法检查你的这个错误
相似回答