多个赋值操作符中,各对象必须具有相同的数据类型,或者具有可转换为同一类型的数据类型。
int ival;int*pval;
ival = pval =0; //error 尽管ival和pval都可以赋值为0
string s1,s2;
s1 = s2 ="OK" //ok
如果指针指向不是用new分配的内存地址,则在该指针上使用delete是不合法的。
通常编译器不能断定一个指针是否指向动态对象,因此尽管这样做是错误的,但在大部分编译器上仍能运行通过,但是会产生运行时错误。整形提升
对于所有比int小的整形(char, signed char, unsigned char, short, unsigned short),如过该类型所有可能值都包含在int中,他们会被提升为int型,否则,他们将被提升为unsigned int。
对于包含signed和unsigned int型的表达式,表达式中的signed型整数会被转换为unsigned型。
int i =-5;
unsignedint ii =1;
cout<<(i>ii)<<endl; //输出1,非常有趣的结果 原因是int型的i转换为unsigned int型
short i =-5;
unsignedshort ii =1;
cout<<(i>ii)<<endl; //输出0 比较时short和unsigned short都提升为int型