类型 | 32位 | 64位 |
---|---|---|
char | 1 | 1 |
int | 4 | 4\8 |
long | 4 | 8 |
float | 4 | 4 |
double | 8 | 8 |
指针 | 4 | 8 |
#include <iostream>
using namespace std;
class A
{
public:
A()
{
printf("A");
}
};
int main()
{
A *p1 = new A;
A *p2 = (A *)malloc(sizeof(A));
// sizeof为1,这条语句创建一个大小为1的A的指针数组,但是没有创建任何A对象,因此不输出A
return 0;
}
输出A,但是没有释放内存。malloc只是分配内存,不调用类的构造函数构建
2个字节也就是16位
int main(void)
{
printf("%s , %5.3s\n","computer","computer");
return 0;
}
输出computer,com
变量a是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初始值用16进制表示为:0x8000000000000000。则a+b的结果用10进制表示为多少?
在C++中,为了让某个类只能通过new来创建(即如果直接创建对象,编译器将报错),应该?
编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性,其实不光是析构函数,只要是非静态的函数,编译器都会进行检查。如果类的析构函数是私有的。则编译器不会在栈空间上为类对象分配内存。因此析构函数设为私有,类对象就无法建立在栈上了,只能在堆上(动态new)分配类对象。
void main()
{
char c=’a’;
if ('a'<c<='z') printf ("Low”);
else printf("UP");
}
输出LOW,关系运算符具有左结合性。
char s[]="\\123456\123456\t";
printf("%d\n",strlen(s));
输出12
2019 02 07