清华大学出版社 TSINGHUA UNIVERSITY PRESS -215~215-1,即-32768~32767。常见这样的程序 段: int num: num=89101; printf(od", num) 得到的却是23565,原因是89101已超过32767。两 个字节容纳不下89101,则将高位截去。见图161。 即将超过低16位的数截去。即将89101减去216(即 16位二进制所形成的模)。89101-6536=23565
-2 15~2 15 -1,即-32768~32767。常见这样的程序 段: int num; num=89101; printf("%d",num); • 得到的却是23565,原因是89101已超过32767。两 个字节容纳不下89101,则将高位截去。见图16.1。 即将超过低16位的数截去。即将89101减去216(即 16位二进制所形成的模)。89101-65536=23565
清华大学出版社 TSINGHUA UNIVERSITY PRESS 8901:0000000010101100000101 23565: 0101110000001101 图161 有时还会出现负数。例如 ·num=196607 输出得-1。因为196607的二进制形式为 ·00000000000000101111111111111111 ·去掉高位10,低16位的值是1(-1的补码是: 1111lllllllllll1) 对于超过整个范围的数,要用long型,即改为 long int num; num=89101
图16.1 • 有时还会出现负数。例如 • num=196607; • 输出得-1。因为196607的二进制形式为 • 00 00 00 00 00 00 00 1011 11 11 11 11 11 11 11 • 去掉高位10,低16位的值是-1(-1的补码是: 1111111111111111)。 • 对于超过整个范围的数,要用long型,即改为 • long int num; • num=89101;
清华大学出版社 TSINGHUA UNIVERSITY PRESS printf("oold", num) 请注意,如果只定义num为ong型,而在输出时 仍用“%d”说明符,仍会出现以上错误。 ·(4)输入变量时忘记使用地址符。如: scanf("%od%d",a, b) 这是许多初学者刚学习C语言时一个常见的疏忽, 或者说是习惯性的错误,因为在其他语言中在输 入时只需写出变量名即可,而C语言要求指明 “向哪个地址标识的单元送值”。应写成 scanf(%od %d", &a, &b); ·(5)输入时数据的组织与要求不符 用scan函数输入数据,应注意如何组织输入
• printf("%ld",num); • 请注意,如果只定义num为long型,而在输出时 仍用“%d”说明符,仍会出现以上错误。 • (4) 输入变量时忘记使用地址符。如: • scanf("%d%d",a,b); • 这是许多初学者刚学习C语言时一个常见的疏忽, 或者说是习惯性的错误,因为在其他语言中在输 入时只需写出变量名即可,而C语言要求指明 “向哪个地址标识的单元送值”。应写成 scanf("%d%d",&a,&b); • (5) 输入时数据的组织与要求不符。 • 用scanf函数输入数据,应注意如何组织输入
清华大学出版社 TSINGHUA UNIVERSITY PRESS 数据。假如有以下scan函数: scanf("%od%d", &a, &b); 有人按下面的方法输入数据: 3, 这是错的。数据间应该用空格来分隔。读者可以 用 printf("ood%d", a, b) ·来验证一下。应该用以下方法输入: ·34 如果 scanf函数为 scanf( %d, %d,&a, &b); 对scan函数中格式字符串中除了格式说明符外
数据。假如有以下scanf函数: • scanf("%d%d",&a,&b); • 有人按下面的方法输入数据: • 3,4 • 这是错的。数据间应该用空格来分隔。读者可以 用 • printf("%d%d",a,b); • 来验证一下。应该用以下方法输入: • 34 • 如果scanf函数为 • scanf("%d,%d",&a,&b); • 对scanf函数中格式字符串中除了格式说明符外
清华大学出版社 TSINGHUA UNIVERSITY PRESS 对其他字符必须按原样输入。因此,应按以下方 法输入 3,4 此时如果用“34”反而错了。还应注意,不能企图 用 scanf( input a &e b: %d, %od, &a, &b 想在屏幕上显示一行信息: · input a&b: 然后在其后输入a和b的值,这是不行的。这是由 于有的读者以为 scanf具有 BASIC语言中的 IINPUT 语句的功能(先输出一个字符串,再输入变量的值) 如果想在屏幕上得到所需的提示信息,可以另加 个prin函数语句:prin" input a&b:");
对其他字符必须按原样输入。因此,应按以下方 法输入: • 3,4 • 此时如果用“34”反而错了。还应注意,不能企图 用 • scanf("input a & b:%d,%d",&a,&b); • 想在屏幕上显示一行信息: • input a & b: • 然后在其后输入a和b的值,这是不行的。这是由 于有的读者以为scanf具有BASIC语言中的INPUT 语句的功能(先输出一个字符串,再输入变量的值)。 如果想在屏幕上得到所需的提示信息,可以另加 一个printf函数语句:printf("input a & b:");