本文共 7102 字,大约阅读时间需要 23 分钟。
类型 | 大小(字节) | 取值范围 |
bool | 1 | true 或 false |
int | 4 | -2147483648~2147483647 |
short int | 2 | -32768~32767 |
long int | 4 | -2147483648~2147483647 |
long long int | 8 | -9223372036854775807~9223372036854775807 |
unsigned int | 4 | 0~4294967395 |
unsigned short int | 2 | 0~65535 |
unsigned long int | 4 | 0~4294967395 |
char | 1 | 256 个字符 |
wchar_t | 2 | 256 个字 |
float | 4 | 10^-37~10^38 |
double | 8 | 10^-307~10^308 |
long double | 16 | 10^-4931~10^4932 |
注:一下的数字为unsigned int型数据
| 按位或运算符
eg:2|4=6;2|6=6;& 按位与运算符
eg:2&4=0;2&6=2;^ 按位异或运算符
eg: 2^4=6;2^6=4;~ 按位求反运算符
eg: ~2=4294967393>> 运算符把位向右移动
eg: 8>>2=2<< 运算符把位向左移动
eg:2<<2=8 优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
1 | [] | 数组下标 | 数组名[常量表达式] | 左到右 | |
() | 圆括号 | (表达式)/函数名(形参表) | |||
. | 成员选择(对象) | 对象.成员名 | |||
-> | 成员选择(指针) | 对象指针->成员名 | |||
2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
(类型) | 强制类型转换 | (数据类型)表达式 | |||
++ | 自增运算符 | ++变量名/变量名++ | 单目运算符 | ||
– | 自减运算符 | –变量名/变量名– | 单目运算符 | ||
* | 取值运算符 | *指针变量 | 单目运算符 | ||
& | 取地址运算符 | &变量名 | 单目运算符 | ||
! | 逻辑非运算符 | !表达式 | 单目运算符 | ||
~ | 按位取反运算符 | ~表达式 | 单目运算符 | ||
sizeof | 长度运算符 | sizeof(表达式) | |||
3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
* | 乘 | 表达式*表达式 | 双目运算符 | ||
% | 余数(取模) | 整型表达式/整型表达式 | 双目运算符 | ||
4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
- | 减 | 表达式-表达式 | 双目运算符 | ||
5 | << | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
>> | 右移 | 变量>>表达式 | 双目运算符 | ||
6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
>= | 大于等于 | 表达式>=表达式 | 双目运算符 | ||
< | 小于 | 表达式<表达式 | 双目运算符 | ||
<= | 小于等于 | 表达式<=表达式 | 双目运算符 | ||
7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
!= | 不等于 | 表达式!= 表达式 | 双目运算符 | ||
8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
10 | | | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | ?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
14 | = | 赋值运算符 | 变量=表达式 | 右到左 | |
/= | 除后赋值 | 变量/=表达式 | |||
*= | 乘后赋值 | 变量*=表达式 | |||
%= | 取模后赋值 | 变量%=表达式 | |||
+= | 加后赋值 | 变量+=表达式 | |||
-= | 减后赋值 | 变量-=表达式 | |||
#include < stdio.h >int main() { int a,b; while(scanf("%d %d",&a, &b) != EOF) printf("%d\n",a+b); return 0; }
注:scanf函数返回值就是读出的变量个数,如:scanf( “%d %d”, &a, &b );如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。EOF是一个预定义的常量,等于-1。
#include < iostream > using namespace std;int main(){ int a,b; while(cin >> a >> b) cout << a+b << endl; return 0;}
>>输入操作符返回流对象的引用,cin >> x 返回istream&,cout << x返回oostream&
若流被标记错误(读取失败)就返回false. ctrl+z,F6可跳出循环,这代表eof(文件结束符) 当在缓冲区读取到的数据与>>后面的变量类型不匹配的时候,就会结束。输入是一整行的字符串的,C语法:
char buf[20]; gets(buf); C++语法: 如果用string buf;来保存: getline( cin , buf ); 如果用char buf[ 255 ]来保存: cin.getline( buf, 255 ); scanf(“ %s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔; 若使用gets函数,应为gets(str1); gets(str2); 字符串之间用回车符作分隔。 通常情况下,接受短字符用scanf函数,接受长字符用gets函数。 而getchar函数每次只接受一个字符,经常c=getchar()这样来使用。 getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下: istream& getline(char line[], int size, char endchar = ‘\n’); 不用管它的返回类型,来关心它的三个参数: char line[]: 就是一个字符数组,用户输入的内容将存入在该数组内。 int size : 最多接受几个字符?用户超过size的输入都将不被接受。 char endchar :当用户输入endchar指定的字符时,自动结束。默认是回车符。 结合后两个参数,getline可以方便地实现: 用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。 char name[4];cin.getline(name,4,’\n’); 由于 endchar 默认已经是 ‘\n’,所以后面那行也可以写成: cin.getline(name,4); 最后需要说明的是,C++的输入输出流用起来比较方便,但速度比C要慢得多。在输入输出量巨大时,用C++很可能超时,应采用C的输入输出#includeint main() { int a,b; freopen("debug\\in.txt","r",stdin); //输入**重定向**,输入数据将从in.txt文件中读取 freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 while(scanf("%d %d",&a,&b)!=EOF) //C++直接用cin,cout效果一样printf("%d\n",a+b); fclose(stdin);//关闭文件 fclose(stdout);//关闭文件 return 0; }
函数名:freopen
声明:FILE *freopen( const char *path, const char *mode, FILE *stream ); 所在文件: stdio.h 参数说明: path: 文件名,用于存储输入输出的自定义文件名。 mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。 stream: 一个文件,通常使用标准流文件。 返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值) 功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。#includeint main(){//写操作char f[7]="ddddd";/*定义char数组并初始化*/FILE *fp;fp=fopen("test_b.txt", "w+"); /*创建一个二进制文件只写*/fwrite(f, sizeof(char), 7, fp);/*将6个char写入文件中*/int i=6;char *s="haha";fputs("Your score of TOEFLis\n", fp);/*向所建文件写入一串字符*/ //fputc(':\n', fp); /*向所建文件写冒号:*/fprintf(fp, "%s", s); /*向所建文件写一字符串*/ fclose(fp); /*关闭文件*///读操作//freadFILE *fpp;char dat[10];fpp=fopen("test_b.txt", "rb");/*打开一个二进制文件只读*/int p=fread(dat, sizeof(char), 10, fpp);if(p!=10){if(feof(fpp))//feof()函数检测文件位置指示器是否到达了文件结尾printf("End of file");elseprintf("Read error"); /*读数错误*/fclose(fpp); /*关闭文件*/}elseprintf("%s",dat);//fscanffpp=fopen("test_b.txt", "rb");/*打开一个二进制文件只读*/char temp[100];while (fscanf(fpp,"%s",temp)!=-1){ printf("%s\n",temp);}fclose(fpp);//fgetsfpp=fopen("test_b.txt", "rb");char tpp[100];char *tp;while((tp=fgets(tpp,3,fpp))!=NULL){ printf("%s\n",tp);}fclose(fpp);//fgetcfpp=fopen("test_b.txt", "rb");char t;while((t=fgetc(fpp))!=EOF){ printf("%c\n",t);}fclose(fpp);return 0;}
fopen函数 用于打开文件
FILE *fopen(char *filename, *type); fopen(“c:\ccdos\clib”, “rb”); 如果成功的打开一个文件, fopen()函数返回文件指针,否则返回空指针(NULL)。由此可判断文件打开是否成功。 “r” 打开文字文件只读 “w” 创建文字文件只写 “a” 增补,如果文件不存在则创建一个 “r+” 打开一个文字文件读/写 “w+” 创建一个文字文件读/写 “a+” 打开或创建一个文件增补 “b” 二进制文件(可以和上面每一项合用) “t” 文这文件(默认项)fclose()函数用来关闭一个由fopen()函数打开的文件,其调用格式为:
int fclose(FILE *stream);该函数返回一个整型数。当文件关闭成功时,返回0,否则返回一个非零值。可以根据函数的返回值判断文件是否关闭成功。 文件的随机读写 fseek()函数一般用于对 二进制文件进行操作。当fseek()函数返回0时表明操作成功, 返回非0表示失败。fread()函数是从文件中读count个字段, 每个字段长度为size个字节, 并把 它们存放到buf指针所指的缓冲器中。
fwrite()函数是把buf指针所指的缓冲器中, 长度为size个字节的count个字 段写到stream指向的文件中去。
ftell()函数返回文件位置指示器的当前值,这个值是指示器从文件头开始 算起的字节数, 返回的数为长整型数, 当返回-1时, 表明出现错误。
文件的顺序写函数
fprintf() 函数的返回值为实际写入文件中的字符个数(字节数)。如果写错误,则返回一个负数;fputs()函数返回0时表明将string指针所指的字符串写入文件中的操作成功, 返回非0时,表明写操作失败。
fputc()函数返回一个向文件所写字符的值,此时写操作成功,否则返回EOF(文件结束结束其值为-1, 在stdio.h中定义)表示写操作错误。
fprintf( ) 函数中格式化的规定与printf( ) 函数相同,所不同的只是fprintf()函数是向文件中写入。而printf()是向屏幕输出。
文件的顺序读操作函数
fscanf()函数的用法与scanf()函数相似,只是它是从文件中读到信息。 fscanf()函数的返回值为EOF(即-1), 表明读错误,否则读数据成功。读到空白字符自动返回。fgets()函数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的字符串中,在读入之后自动向字符串未尾加一个空字符,读成功返回string指针,失败返回一个空指针。
fgetc()函数返回文件当前位置的一个字符,读错误时返回EOF。
#include#include using namespace std;int main(){ //文本文件打开方式设为可读写// fstream outfile("f1.dat",ios::out|ios::in);// if (!outfile)// { // cout<<"open error!"< >a[i];// outfile< <<' ';// }// //从文件读取// for (int i=0;i<10;i++)// { // outfile>>a[i];// cout< <<' ';// }// outfile.close(); //从键盘读入一行字符,将其中的字母存在磁盘文件// ofstream outfile("f2.dat");// if (!outfile)// { // cout<<"open error"< =65&&c[i]<=90||c[i]>=97&&c[i]<=122)// { // //outfile.put(c[i]);或者// outfile< >ch/*infile.get(ch)*/) { if (ch>=97&&ch<=122) { ch=ch-32; } outfile3<
1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<”Write Stdout”<<’\n’;就表示把字符串”Write Stdout”和换行字符(‘\n’)输出到标准输出流。
2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
ifstream file2(“c:\pdos.def”);//以输入方式打开文件 ofstream file3(“c:\x.123”);//以输出方式打开文件
#include#include using namespace std; string s; stringstream ss; int a; char c; while(getline(cin,s)){ //s = 123A23B234C...... ss.clear();//注意不能忘记清空流 ss< >a>>c;){ //注意ss.eof()会导致最后一个数据重复操作 cout< <<
转载地址:http://irkab.baihongyu.com/