1.int long short等,只规定了最小的字节为多少,具体和操作系统以及编译器有关系,#include头文件中规定了最大的值是多少
int a=INT_MAX;
short b=SHRT_MAX;
long c=LONG_MAX;
long long d=LLONG_MAX;
cout << a << endl << b << endl << c << endl << d << endl;
2.没有初始化会怎么样?
如果不对变量进行初始化,那么值为变量被创建之前的内存单元的值,不确定的;
3.如果超出变量最大的范围会怎么样?
int a=INT_MAX;
cout << a << endl;
a++;
cout << a << endl;
2147483647
-2147483648
unsigned int a=0;
cout << a << endl;
a--;
cout << a << endl;
0
4294967295
4.char 的存储,char类型在内存单元中存的是ASC码,但是输出的时候因为cout 的作用所以输出字符;
char ch=‘M‘;
cout << ch << endl;
cout.put(ch);
cout << endl;
int i=ch;
cout << i << endl;
M
M
77
5.转意字符 \
cout << "hello \"world!" << endl;
hello "world!
6.const 为什么比define好?
能够明确指定的类型;
利用c++的作用域规则将定义限制在特定的函数中;
const可以用于更复杂的类型;
7.小小数的问题
double a=3.14E2;
cout << a << endl;
double b=3.14e-1;
cout << b << endl;
314
0.314
float 和double 是精度的差异:
float a=3.14E23;
float b=a+1;
cout << b-a << endl;
0
因为float的精度就是前6或者7位,后面的位数加上或者减去对他没有影响,所以结果为0;
8 . 除法
int a=10/3;
cout << a << endl;
double b=10/3;
cout << b << endl;
b=10/3.0;
cout << b << endl;
b=10.0/3;
cout << b << endl;
3
3
3.33333
3.33333
9.数组init中的几种情况
int a[3]={1,2,3};
cout << sizeof(a[0]) << endl;
cout << sizeof(a) << endl;
int b[3]={0};
cout << b[2] << endl;
int c[3]={1};
cout << c[0] << " " << c[1] << endl;
int d[]={1,2,3,4};
cout << sizeof(d)/sizeof(d[0]) << endl;
4
12
0
1 0
4
10.字符串
char ch=83;
cout << ch << endl;
char *ch1="S";
cout << ch1 <<endl;
S
S
“S”不是字符常量,它表示’S”\0’两个字符的字符串。“S”其实表示字符串的地址;
11 cin.get() cin.getline()的问题
都是读一行,读到\n结束;
但是cin.get()将换行符号仍然放在输入队列中,尔cin.getline()舍弃;
eg:
cin.get(name,20);
cin.get(add,20);
//没来得及输入就直接跳出来了,因为上一次\n还在输入队列中,这次以为是空的字符串
改为这样又可以顺利读入
cin.getline(name,20);
cin.get(add,20);
读入的拼接方法:
cin.get(name,20).get();
cin.get(add,20);//这样可以成功输入
接着几个拼接的例子:
cin.getline(name,20).get(add,20);
cin >> name;
cin.get(add,20);
不能输入,因为cin 输入之后回车键生成的换行符号留在了输入队列中,所以,cin.get以为是空字符串,直接读取了。
cin >> name;
cin.get();
cin.get(add,20);
等效于
(cin >> name).get();
cin.get(add,20);
getline(cin , str);没有长度限制
12.string 类,直接“加减”
char name[]="vd";
cout << strlen(name) << endl;
string add="vd";
cout << add.size() << endl;
13.结构体:
struct node
{
int a;
int b;
} ;
node hello={1,2};
cout << hello.a << endl;
c++不提倡外部变量,但是提倡使用外部结构体声明;
结构体直接可以复制:
struct node
{
int a;
int b;
} ;
node hello={1,2};
node world=hello;
可以缺省struct 的名字:
struct
{
int a;
int b;
} hello;
hello={1,2};
cout << hello.a << endl;
14.指针
在c++中int* 作为一种类型,但是申请多个的时候还是应该
int* p,*q;
而不是
int* p,q;
避免野指针,一定要在*解引用之前知道指针确定的指向;
int* p;
*p=123;
这种做法是危险的
给指针赋地址:
int* p;
*p=0xxxxxxx;//WA
*p=(int *) 0xffffff//AC
时间: 2024-12-07 22:16:04