C语言基础问题 望细心回答 谢谢

C语言
1.C语言到底由多少个关键字啊?我知道的就由两个版本 一个是32 的一个是35的
2.常量123E-2 种的‘E’ 是什么意思是 16进制的15的意思吗 ?]
3.C语言中指数怎么表示?
4.若int类型数据占两个字节,则执行一下语句的输出为( )
int k=-1
printf("%d,%u\n",k,k)
分析:k=-1 在内存中存储形式1111 1111 1111 1111,当把k 值按“%d”格式(有符号整数)输出时为-1:按“%d”格式(无符号整数) 65535
(很不明白K=-1的存储形式的开头是符号形式,1是负数 0是正数 但是1为什么会变成15个1呢这我不明白了 麻烦给讲解下谢谢
还有 有符号数(signed)和无符号数(unsigned)的整形数据的处理给讲解一下谢谢)
5.long数据0xabcdefL赋值给int x 通过printf(“%x”.x)输出得的得的是什么?(麻烦讲解一下)
6.long int y=0x11 用printf("%Id",y)输出 为什么就等于17了呢?
望君细心回答 感激不尽

1.32
2.E表示指数形式123E-2就是123*10^(-2)
3.用E表示
4.这里涉及真值,源码,补码问题
-1 真值是 -0000 0000 0000 0001
源码是 1000 0000 0000 0001它的符号因为是负所以为1
补码是 1111 1111 1111 1111它是源码符号位不变,其他位安位取反再加一求得的
计算机运算的时候一般是使用补码形式
有符号就是最高位是符号位表示正负,不表示值
无符号数很简单,就是二进制数,如(1001)B=8+0+0+1=9,不用考虑他的符号。而有符号数就不一样了,他的最高位表示符号,有符号数最基本的表示有三种,源码,反码,补码。他们的正数表达形式是相同的。如(0111)它的反码,补码,源码都等于7。就是负数有点区别,如 :(1001)源=-1;(1001)反=(1110)源=-6;(1001)补=(1111)源=-7.
5.long是长整型int是整型,在C++中它们都是四个字节表示,所以应该没影响的,还是OXabcdefL
6.Ox表示16进制,所以 y=0x11中的11是十六进制表示的,这样答案等于十七你应该明白了吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-01
1. 多少个根本不是问题,那个是编译器要担心的事
2. exponent,指数,123e-2也就是123 x 10的-2次方
3. 求对数exp 求幂pow 否则同上
4. 不是这样的。计算机储存用的补码。其实就是0 - 1 = -1这么直白的东西。

我们只用4位说
0000这是0 -1的话不断地借位得到
(*)1111 (*)的位置是假设的一位,并不在变量中,所以也不会被保存。
5. cdef。%x只接受2字节,所以只会输出低2字节的cdef
6. %ld接受4字节所以可以完整输出y的值(当然这个问题本身其实不受这个影响),这里因为d是10进制输出所以0x11就输出为17
第2个回答  2009-02-01
1:32。35只是个别编译器支持,C99(现行的ISO标准)是32个
2:这个E是科学计数法,123E-2就是123乘以10的-2次方,即1.23
3:什么指数?
4:整数在内存中以补码形式存储。补码的相关知识请自己查一下,我只说主要的:正数的补码和原码一致,1的原码:0000 0000 0000 0000,补码:0000 0000 0000 0001;负数的补码等于反码(绝对值原码各位取反)加1:-1的绝对值是1,所以-1的反码:1111 1111 1111 1110,-1的补码等于反码+1:1111 1111 1111 1111
5:printf("%x",x); 应该是cdef,因为高位溢出。
6:0x11是16进制,转换成10进制就是17。因为0x11=1×16+1=17。
第3个回答  2009-02-01
1 不同的环境不同有TURBO 有VC不一样的
2 是指数123E-2就是123*10的-2次方的意思
3 比如数a的n次方用pow(a,n)这个函数,要include <math.h>
4 -1的存储方式是取补码
有符号与无符号只是取值范围不同而已
有符号是-32768到32757
无符号是0到65535
5 0X为十六进制 给十进制的 输出十六进制 但为long型要溢出取高位就是了
3 整型为0X为十六进制的11就是16+1为17啦
第4个回答  2009-02-01
见了这样的问题就想抽丫的

百度知道也不是你这样用的吧

书上说的明白的不能再明白了!
第5个回答  2009-02-03
1,32个
2,科学计数法的缩写
3,用pow(x,y)x为底数y为指数
4,计算机是用补码来储存负数的(请自己查补码)
5,由16进制转为8进制
6.16进制下的11=1×16+1(10进制)