char(char又叫短整型) | unsigned char |
signed char | |
short | unsigned short[int] |
signed short [int] | |
int | unsigned int |
signed int | |
long | unsigned long [int] |
signed long [int] |
区别:
1. 存储空间:float类型占用4个字节(32位),而double类型占用8个字节(64位)。因此,double类型可以表示更大范围的数值,并且具有更高的精度。
2. 表示范围:float类型可以表示的有效位数大约是6-7位,而double类型可以表示的有效位数大约是15-16位。因此,double类型可以表示更大范围的数值,并且可以提供更高的精度。
然而,由于double类型占用的存储空间更大,它相对于float类型的运算速度可能会稍慢。因此,在选择使用float还是double时,需要根据具体需求来决定。
- int * p1,p2;//①p1是指针, p2不是指针
- int *p1,*p2;//②p1, p2都是一级指针
- int * p1;int *p2;//③p1, p2都是一级指针
避免出现这种有误会性质的代码,方便别人也方便自己,我们使用方式3最好
- #include
-
-
- int check_sys()
- {
- int i = 1;
- return (*(char*)&i);
-
- }
- int main()
- {
- int ret = check_sys();
- if (ret == 1)
- printf("小端\n");
- else
- printf("大端 \n");
-
- return 0;
- }
运行结果:
check_sys函数也可以这样写
- int check_sys()
- {
- union {
- int i;
- char c;
- }u;
- u.i = 1;
- return u.c;
- }
实验代码:
- #include
- int main()
- {
- int n = 9;
- float* pFloat = (float*)&n;
- printf("n的值为:%d\n", n);
- printf("*pFloat的值为:%f\n", *pFloat);
- *pFloat = 9.0;
- printf("num的值为:%d\n", n);
- printf("*pFloat的值为:%f\n", *pFloat);
- return 0;
- }
实验结果:
9->0000 0000 0000 0000 0000 0000 0000 1001
由于指数E全为0,所以符合上一节的第二种情况。因此,浮点数V就写成:
V=(-1)^0 × 0.00000000000000000001001×2^(-126)=1.001×2^(-146)
显然,V是一个很小的接近于0的正数,所以用十进制小数表示就是0.000000。
9.0-> 1001.0->(-1)^01.0012^3 ->s=0,M=1.001,E=3+127=130
那么,第一位的符号位s=0,有效数字M等于001后面再加20个0,凑满23位,指数E等于3+127=130, 即10000010。 所以,写成二进制形式,应该是s+E+M,即 这个32位的二进制数,还原成十进制,正是 1091567616 。
- #include
- int main()
- {
- char a = -1;
- signed char b = -1;
- unsigned char c = -1;
- printf("a=%d,b=%d,c=%d", a, b, c);
- return 0;
- }
- #include
- int main()
- {
- char a = -128;
- printf("%u\n",a);
- return 0;
- }
🖊 3.下面程序输出什么?
- #include
- int main()
- {
- char a = 128;
- printf("%u\n", a);
- return 0;
- }
- #include
-
- int main()
- {
- int i = -20;
- unsigned int j = 10;
- printf("%d\n", i + j);
-
- return 0;
- }
- #include
-
- int main()
- {
- unsigned int i;
- for (i = 9; i >= 0; i--)
- {
- printf("%u\n", i);
- }
- return 0;
- }
- #include
- int main()
- {
- char a[1000];
- int i;
- for (i = 0; i < 1000; i++)
- {
- a[i] = -1 - i;
- }
- printf("%d", strlen(a));
- return 0;
- }
- #include
- unsigned char i = 0;
- int main()
- {
- for (i = 0; i <= 255; i++)
- {
- printf("hello world\n");
- }
- return 0;
- }