兄弟们更新了,今天讲的内容非常有用,知识点虽然不是最重要的,但却是很实用的。话不多说,干货送上!
强制类型转换运算符
float a=7.6;
int b;
b=(int)a%3;
printf(“%d\n”,b);
return 0;
一个表达式强行临时转换类型,只强制转换那一次,临时操作
求字节数运算符 sizeof
int main()
{
printf("%d", sizeof(int));//4
printf("%d", sizeof(char));//1
printf("%d", sizeof(short));//2
printf("%d", sizeof(long));//4
printf("%d", sizeof(long long));//8
printf("%d", sizeof(float));//4
printf("%d", sizeof(double));//8
return 0;
}
这里我介绍一下这些关键字给的内存
做题时默认int为2字节
这里略微补充一下
补充:原码、反码、补码
//机器数:最高位0表示正数,最高位1表示负数
//假设是2个字节(16位)来存放一个整数
//原码:跟机器数规则相同
//+7:00000000 00000111
//-7:10000000 00000111
// 原码没法统一表示+0与-0
// 反码:正数与原码相同,负数是原码最高位不变,其余取反
// 例如:-7=11111111 11111000
// 然而还是无法统一+0与-0
// 补码:正数跟原码相同,负数是反码加1
// +7=00000000 00000111
// -7=11111111 11111000+1=11111111 11111001
// 此时+0=00000000 00000000
// -0=11111111 11111111+1=1 00000000 00000000
// 负数补码形式的二进制数如何转成对应的十进制
// 第一步所有位取反(包括最高位)
// 11111111 11111001
// 00000000 00000110
// 把他换成十进制正好是6
// 把刚才得到的结果前面加上一个负号然后减1 -6-1=-7
// int类型取值范围
// 00000000 00000000
// 01111111 11111111=32767
// 10000000 00000000=32768
// 01111111 11111111=32767
// -32768
// 所以int类型是-32768到32767
// 取余时候正负号看被除数
// -7%3=-2;而7%-3=2
逗号运算符
格式:表达式1,表达式2,表达式3,……表达式n
int a=3,b;
b=(a+3,a+=3,a+5);
printf(“a=%d,b=%d\n”,a,b);
return 0;
其中a=6是用a+=3求得的
b=11是a=6后a+5求得的11
去掉括号后就变成:
b=a+3然后a+=3然后a+5
逗号的优先级比赋值符号还低
下次讲printf函数。