Cxxxxxxxx

编程入门 行业动态 更新时间:2024-10-26 15:13:09

Cxxxxxxxx

Cxxxxxxxx

//定义一个字符型数组,用关键字sizeof求长度

#include <iostream>int main()
{char a[1000];int i;printf("hello world\n");for (i = 0; i < 1000; i++){a[i] = -1 - i;//printf("%d\n",a[i]);}printf("the size of i %d\n",sizeof(i));printf("the size of i %d\n", sizeof(char));printf("the size of i %d\n", sizeof(a));printf("%d\n", strlen(a));return 0;
}
//结果
C:\Users\kanxue\Desktop\VS\ConsoleApplication1\Debug>ConsoleApplication1.exe
hello world
the size of i 4
the size of i 1
the size of i 1000
255

//定义一个singned int变量和unsigned int相加得到结果

#include <iostream>int main()
{int i = -20;unsigned int j = 10;printf("the i+j valude is %d\n", i + j);return 0;}//结果很快就能得出结果,我们这里主要是分析原因
C:\Users\kanxue\Desktop\VS\ConsoleApplication1\Debug>ConsoleApplication1.exe
the i+j valude is -10

分析:编译器缺省默认情况下数据为signed类型,在计算机系统中,数值一律用补码来表示,正数的补码和原码一致,负数的补码:符号为为1,其余位位该数绝对值的源码按位取反,然后整个数加1;

-20用正常二进制表示为: 1001 0100 ,其补码为:1110 1100
10二进制表示为:0000 1010
两者相加:1110 1100 + 0000 1010 = 1111 0110 其补码为:1000 1010 -> -10

#include <stdio.h>
int main()
{int a[5] = {1,2,3,4,5};int *ptr = (int *)( &a + 1);printf("%d, %d, \n", *(a+1), *(ptr-1) );return 0;
}//结果
C:\Users\curtis\Desktop\VS\static\Debug>static.exe
2, 5,

数组名 a 的特殊之处:
&a : 代指 数组的整体 的地址,这里的 a是数组整体
a+1: 代指 数组的第一个成员,这里的 a是数组首地址

#include <iostream>#define SQR(x) printf("The square of "#x" is %d.\n", ((x)*(x)));int main()
{signed i;int *p;printf("sizeof *p is %d\n", sizeof(p));SQR(3);for (i = 9; i >= 0; i--){printf("%u\n", i);}return 0;
}//
C:\Users\kanxue\Desktop\VS\ConsoleApplication1\Debug>ConsoleApplication1.exe
sizeof *p is 4
The square of 3 is 9.
9
8
7
6
5
4
3
2
1
0

更多推荐

Cxxxxxxxx

本文发布于:2023-06-29 22:55:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/951988.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Cxxxxxxxx

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!