int main(int argc,char *argv[])
{
return 0;
}
argc:字符串长度
argv:argv就是我定义的一个指针数组,每个元素是一个char *类型的指针,这些指针存放着其对应字符串的首地址
return 0:程序执行到此次正常退出(告诉程序激活者执行到此处正常结束)
数据类型:
字节 | 整型 | 范围 |
---|---|---|
1 | char | -128—127 |
2 | short | -32768—32767 |
4 | int | -2147483648—2147483647 |
4/8 | long | 32位同int |
题目:
1.char a,b,c.
a = 30,b = a++,c = ++a,d = (a++)*10
考察点:char型数据的范围和++a,a++
b = 30,c = 31,d = 310 = 101000000.
由于d超出了char的范围,char类型只要8位。因此d = 01000000 = 64.
2.int i = -2147483648.
求:-i ~i 1-i -1-i
考察点:负数机器码(补码)
r1. 5: 0000 0101
-5: 1111 1011<=================机器码(补码)
+2147483648:1000 0000 0000 0000 0000 0000 0000 0000
-2147483648: 1000 0000 0000 0000 0000 0000 0000 0000
-i:按位取反+1 -2147483648
~i:按位取反i 2147483647
1-i: 1-i = 1+(-i) = -2147483647
-1-i: -1+(-i) = 2147483647
1:0000 0000 0000 0000 0000 0000 0000 0001
-1:1111 1111 1111 1111 1111 1111 1111 1111
- -i: 1000 0000 0000 0000 0000 0000 0000 0000
====
1 0111 1111 1111 1111 1111 1111 1111 1111
3.int a = -5;
unsigned int b = 1;
int count = 0;
while(a++)
{
if(a + b > 5)
{
count++;
}
}
考察点:不同数据类型的转化和负数机器码
5: 0000 0000 0000 0000 0000 0000 0000 0101
-5: 1111 1111 1111 1111 1111 1111 1111 1011
无符号类型:所有位参与运算
a++ | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|---|---|---|---|
a+b>5 | 1 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 4 | 5 |
熟练:计算机中数据都是以二进制形式存储的,正数为原码存储,负数为二进制补码形式