- 赋值语句
int i=1;
int main()
{
cout<<i<<endl;//1
}
int i=1;
int main()
{
int i=i;
cout<<i<<endl;//4250238
}
main内的i与main外的i无关,是一个未定义的值
int main()
{
int x=2,y=3,z=3;
x=(y&z);//y与z按为与(二进制),再把结果赋值给x
cout<<x<<endl;//3
x=(y&&z);//y与z进行与运算,y真,z真,再把结果赋值给x
cout<<x<<endl;//1
x=(y|z);//同理
cout<<x<<endl;//3
x=(y||z);//同理
cout<<x<<endl;//1
}
sizeof()
sizeof()操作符的数据类型是size_t。
一般32位机子上各个数据类型所占的存储空间如下:
char:8位
short:16位
int:32位
long:32位
float:32位
double:64位1.struct:
数据成员对齐规则:
数据对齐:是指所在的内存地址必须是该数据程度的整数倍。
结构体(struct)的数据成员,第一个数据成员放在offset为0的地方,之后的每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机子上为4字节,所以要从4的整数倍地址开始存储)。
//结构体
struct S{
int a; // [0]...[3]
double c;//[8]...[15]
char b; //[16]后面是补齐的操作到[23]
};
int main()
{
cout<<sizeof(S)<<endl;//24
}
//下面的程序只是调整顺序,但是计算结果不一样
struct S{
int a; //[0]...[3]
char b; //[4]后面是补齐的操作到[7]
double c;//[8]...[15]
};
int main()
{
cout<<sizeof(S)<<endl;//16
}