_
开头,后面可以跟若干个字母、数字、下划线,不能有其它字符。auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
#include<iostream> using std::cout; using std::endl; int main() { cout <<"char->"<< sizeof(char) << endl; cout <<"short->"<< sizeof(short) << endl; cout << "int->"<<sizeof(int) << endl; cout << "long->"<<sizeof(long) << endl; cout <<"long long ->"<< sizeof(long long) << endl; cout << "float->"<<sizeof(float) << endl; cout << "double->"<<sizeof(double) << endl; cout << "long float->"<<sizeof(long float) << endl; cout << "long double->"<<sizeof(long double) << endl; system("pause"); return 0; }
char->1 short->2 int->4 long->4 long long ->8 float->4 double->8 long float->8 long double->8 请按任意键继续. . .
#include<iostream> using std::cout; using std::endl; int main() { cout <<"char->"<< sizeof(char) << endl; cout <<"short->"<< sizeof(short) << endl; cout << "int->"<<sizeof(int) << endl; cout << "long->"<<sizeof(long) << endl; cout <<"long long ->"<< sizeof(long long) << endl; cout << "float->"<<sizeof(float) << endl; cout << "double->"<<sizeof(double) << endl; cout << "long double->"<<sizeof(long double) << endl; return 0; }
char->1 short->2 int->4 long->8 long long ->8 float->4 double->8 long double->16
32位系统long
的长度是4,64位系统long
的长度是8。
32位系统long float
的长度是8,64位操作系统long float
是不合法的数据类型。
下面三个字符数组初始化的区别:
char arr1[]="abc" //'a''b' 'c' '\0' char arr2[]={'a','b','c'}; //'a''b' 'c' char *p="abcdef"; //p的内存中只存了字符a的地址
C++果然是非常微妙的语言,%f和%lf对于printf()和scanf()的效果是不同的
#include<stdio.h> int main() { float n; scanf("%lf",&n); printf("%f",n); return 0; }
80 0.000000
解决办法:1)将”%lf“改为”%f”;2)将float改为double
事实上,对于printf(),无论是%f还是%lf,效果都是一样的。因为,遇到float,printf()会将float类型自动提升到double,所以不会有什么问题。而且严格地讲,printf()并没有对于%lf的定义,虽然很多编译器会接受,所以最好使用%f。 而对于scanf(),由于接受的是指针,并没有类型提升的说法,所以对于double就应该用%lf,float就是%f。