求余运算符% 位运算(<< >> & | ! ^ 左右移位,与,或,非 ,异或)
这些符号的运算对象都是整型
unsigned short x=0xffff
cout<<x;
cout输出的是整数,所以要将16进制数转化为整数
正常运算就行,结果是65535
如果将short改成unsigned short 那么结果变成-1
0xffff在内存中表示为16个1
16进制转2进制方法:
只需把每一位,变成二进制的四位数,然后拼在一起。
看个例子就懂了,ff bf 是二进制的几?答:1111 1111 1011 1111
如何十六进制转换二进制? - 知乎 (zhihu.com)
16个1,最高位为1,表示负数,在二进制中是补码,要将其转化为原码
先末位-1,得到1111 1111 1111 1110 符号位不变,其余取反,得到1000 0000 0000 0001 ,此为二进制的-1
选D,e的x次方只能用exp(x)表示
double exp(double x); //返回e的x次方
转义字符 \xff 表示 转义字符能表示的最大16进制数
\177是转义字符能表示的最大8进制数
\178则要分为2部分 \17 和8
此外,想表示各种符号 \" \! \? 这样表示,都算一个字符
C++中,字符会尽可能多地结合
strlen()会统计第一个\0之前的字符个数
abcd00\0ahhf\0 用strlen求得结果是6
而sizeof()结果是13
无论自己加不加\0,放在数组中其会自动加上一个\0(数组大小为空时)
11.设有int i=010,j=10;
则 printf(“%d..%d\n”,++i,j--);的输出是。
(A) 11,10 (B) 9,10 (C) 010,9 (D)10,9.
010表示8进制,将其转化为10进制为8
答案为A
char *a="hello" 意思是将字符串的首地址赋给a
int *p ,*q; int k;
k=*p*(*q)这样计算是错误的
乘法*的优先级高于解引用*的优先级
正确运算是(*p)*(*q)
答案是 B C D
如果将*p改为p,结果是 BCD CD D
cout<<"abcd"的意思是输出以a的地址开始,到\0结束的所有字符
对于字符串都是这样
理解原理即可