1楼:
输出结果为:bai
-1,4294967295
65536,65536
分析如下:
%d—整型格式du
化输出符,有符号zhi的。dao
%u—整型格式化输出符,无符内
号的。我想其容他3个的输出结果应该是很清楚的,主要是第2个为什么是4294967295呢?
无符号的int的数值范围是0~4294967295,而整型数值在内存中是以其补码的形式存放的,正数的
补码是其本身,而负数的补码则不是,我以一个一个字节的内存大小来说明:-1
原码:1,0000001,最高位表示符号位,0为正,1为负。其补码的转换方法是:符号位不变,数值
位取反再加1,因此,-1的补码为:1,1111111。对于int为32位4字节的,转换方法一样。
那么,inti=-1,在内存中存放的补码值为:1,1111111...11111111。当以%u格式符形式输出时,最高位的1的性质就变了,编译系统就会把最高位的1
也当成了数值位了,而不是符号位了,那么输出的值就是4294967295了。
2楼:
我用的vc6.0运行结果是
抄-1,4214294967295,65536,65536int i表示i是个有符号数,i=-1(既:1000 0000 0000 0001),负数在计算机里使用补码表示的即:1111 1111 1111 1111,但是输出的时候按照无符号格式(%u)输出按理也就是65535了
不同编译器范围不同,c语言没有明确规定
但是在turbo c中为两个字节,即0~2^16-1(62353)在visual c++6.0中为4个字节,即0~2^32-1(4394967295)
一个字节8位
3楼:爱好_问问
不同编译器会不一样,在int和unsigned为2字节的版本中结果是-1,65536-1,65536
因为整形变量最高位
为符号版位,为一个int型变权量赋值65536或把值为65536的无符号整型变为整型都溢出了,实际上与-1的二进制码是一样的
同样把-1转换成无符号整型也会变成65536
4楼:奇忧幻
unsigned long[int]的
bai范围du是 0~4294967295而printf ("%d,%u",i,i); 中的i的值范围不在 0~4294967295但是在zhic语言当中0~4294967295的数dao是一个循环的内圈子即
容-1对应4294967295
-2对应4294967294 4294967296对应0
5楼:1小2石3头
-1,4294967295;65536,65536;原因是u表示无符号整形,无符号整形的范围是0-65535,而-1超出了这个范围,输出会出错;
6楼:匿名用户
对于有符号整形数,首位代表符号位,如果你明白这句话就知道为什么了
7楼:小小已然
输出的方式不同,结果肯定不同了
c语言的%ld、%d、%u是啥意思啊?
8楼:匿名用户
这几个都是c语言格式化输入输出时使用的格式符号。其中%u为误写,实际为%u。
格式化输出函数包括printf, fprintf, sprintf等等。
格式化输入函数包括scanf, fscanf, sscanf等等。
这类函数在输入输出的时候都有一个参数为格式化字符串(format_str), 里面介绍了输入输出字符串的格式,当需要输入输出变量值时,就需要用对应的格式化字符来替代。
题目中提到的三种格式分别对应:
%ld对应long型,即长整型。
%d对应int型,即整型。
%u对应unsigned int型,即无符号整型。
除此以外,还有如下常见的类型。
%hd对应short型,即短整型。
%hu对应unsigned short型,即无符号短整型。
%f对应float型,即单精度浮点型。
%lf对应double型,即双精度浮点型。
%c对应char型,即字符型。
%s对应char *型,即字符指针/字符数组(均可称为字符串)。
%x对应int型,不过是以16进制输入输出。
%lx对应long型,同样是16进制形式。
以下是一个简单的例子:
#include
intmain()
如果输入1 2 3
将输出i=1
l=2
u=3
9楼:啦啦啦咯哦
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf("《格式化字符串》", 《参量表》)。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。
格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
%d 有符号10进制整数(%ld 长整型,%hd短整型 )%hu 无符号短整形(%u无符号整形,%lu无符号长整形)%i 有符号10进制整数 (%i 和%d 没有区别,%i 是老式写法,都是整型格式)
%o 无符号8进制整数
%u 无符号10进制整数
%x 无符号的16进制数字,并以小写abcdef表示%x 无符号的16进制数字,并以大写abcdef表示%f 输入输出为浮点型 (%lf双精度浮点型)%e/e 用科学表示格式的浮点数
%c 输入输出为单个字符
%s 输入输出为字符串
10楼:匿名用户
变量格式..例如printf("%d",a);双引号里的东东是由后面的变量的类型决定的,若a是long型,则用%ld,若是float型则用%f
11楼:匿名用户
那些是格式占位符 %id占位符用于在屏幕中显示长整型数据 %d占位符用于在屏幕中显示基本整型数据 %u占位符用于在屏幕中显示无符号整型数据 %c占位符用于在屏幕中显示字符型数据 %f占位符用于在屏幕中显示浮点型数据 %s占位符用于在屏幕中显示字符串数据
12楼:匿名用户
%ld、%d、%u 分别代表输出数据格式的类型 分别是 长整型 整型 无符号整型
13楼:匿名用户
%d:int(整形)
c语言问题,C语言问题 10
1楼 include int main void c语言问题 2楼 匿名用户 include include void main 冒泡排序按英语词典规律排序 for i 1 i 5 i printf the country s after sort is n 排序后的国家名称 for i 0 i 5...
c语言里(21)什么结果,在C语言中(-1)&&(-1)结果是?
1楼 匿名用户 是逻辑与运算,其结果只能是0或1, 当参与运算的两个数中有一个是0,其结果就是02是非0值 1也是非0值 所以, 2 1 的结果是1 在c语言中 1 1 结果是? 2楼 匿名用户 在c或c 中 是与的操作符,只要操作符两边都为真 不为0就为真 ,结果就为真。因为 1的二进制码 1的二...
c语言求e 1+1 1!+1 2!+1 3!+
1楼 匿名用户 问题没说清楚是怎么求,所以这里我决定求第n项的e n通过控制台输入获取,例如n 3 则e 1 1 1 1 2 。 。这是我的 include int jiecheng int n 阶乘函数 利用递归方式计算 return n jiecheng n 1 否则继续递归计算 int mai...