📄 c++基础教程 c++.htm
字号:
<P> 例如:<BR> int b=++a;//a=a+1;b=a;<BR> int
b=a++;//b=a;a=a+1;<BR> int c=--a;//a=a-1;c=a;<BR> int
c=a--;//c=a;a=a-1;</P>
<P>前增量(前减量)返回的值是修改后的变量值,故为左值。<BR> 后增量(后减量)返回的值是修改前的变量值,故不为左值。</P>
<P> 例:++(a++);//× ++(++a);//√<BR> (a--)--;//×
(a--)--;//√</P>
<P>若有多个+或-连写时,编译总是将前面两个+或-认为是增量或减量操作符。<BR>例:c=a+b;// √<BR> c=a++b;//
×<BR> c=a+++b;// √<BR> c=a++++b;// ×<BR> c=a+++++b;// ×</P>
<P>7.sizeof操作符<BR> 操作符sizeof(数据类型)可测定某数据类型所占字节长度。
<BR>例如:<BR>cout<<“size of int
is”<<sizeof(int)<<endl;<BR>输出为:size of int is 2</P>
<P>8.优先级和结合性<BR>优先级:不同操作符出现在同一表达式中谁先运算的级别。<BR><BR>例:d=a+b*c;//*优先级比+高。</P>
<P>结合性:同等优先级的操作符出现在同一表达式中谁先运算的规定。<BR>例:d=a+b-c;//左->右<BR>d=a=3;//右->左</P>
<P>C++中表达式的书写.</P>
<P>9. 自动类型转换和强制类型转换<BR><BR>自动类型转换方向 见图</P>
<P><BR>自动类型转换转换方向 <BR><BR>强制类型转换<BR> 格式:(类型修饰符)表达式<BR>
类型修饰符(表达式)<BR><BR>例:int(3.14+i)或(int)(3.14+i)<BR>char(64.8)或(char)64.8或(char)(64.8)</P>
<P><FONT color=#ff0000><A name=a28></A>2.8 逻辑型数据和逻辑表达式 </FONT></P>
<P>1.基本情况<BR> 例:bool isOk,ready=true;</P>
<P>2.关系操作符和逻辑操作符</P>
<TABLE height=65 width="97%" border=1>
<TBODY>
<TR>
<TD width="14%" height=30><FONT size=2>关系运算符</FONT></TD>
<TD width="12%" height=30><FONT size=2>比较(==)</FONT></TD>
<TD width="10%" height=30><FONT size=2>大于(>)</FONT></TD>
<TD width="11%" height=30><FONT size=2>小于(<)</FONT></TD>
<TD width="16%" height=30><FONT size=2>大于等于(>=)</FONT></TD>
<TD width="16%" height=30><FONT size=2>小于等于(<=)</FONT></TD>
<TD width="21%" height=30><FONT size=2>不等于(!=)</FONT></TD></TR>
<TR>
<TD width="14%"><FONT size=2>逻辑运算符</FONT></TD>
<TD width="12%"><FONT size=2>与(&&)</FONT></TD>
<TD width="10%"><FONT size=2>或(||)</FONT></TD>
<TD width="11%"><FONT size=2>非(!)</FONT></TD>
<TD width="16%"> </TD>
<TD width="16%"> </TD>
<TD width="21%"> </TD></TR></TBODY></TABLE>
<P>3.比较(==)<BR>比较(==)结果为真(非0)或假(0)表示。<BR> 赋值(=)结果为=号左边表达式的值。<BR>4.复合条件<BR>子条件1&&子条件2:如(x>=2)&&(x<=7)<BR>子条件1||子条件2
:如(x<2)||(x>7)<BR>E1||E2||…||En<BR>E1&&E2&&…&&|En</P>
<P>5.相反条件 例如:x>3和x<=3<BR> 若x>3的值为true,则x<=3必为false
即x>3和x<=3是互为相反条件<BR>6.等价条件<BR>等价条件:两个逻辑表达式在任何情况下同为true或同为false,则这两个表达式所表示的条件称为等价条件。</P>
<P>7.永真条件:总是成立的条件称为永真条件.<BR> 例如:x>0||x<=0,true是永真条件<BR> 永假条件:总是不成立的条件称为永假条件。<BR> 例如:x>12&&x<5,false</P>
<P>8.逻辑型数据与其它数据类型的关系</P>
<P>逻辑型数据作为数值数据使用时,false被转换成0,true被转换成1。<BR>字符型、枚举型、整型、实型数据的值作为逻辑值使用时,一切0值被转换成false
,一切非零值被转换成true<BR>指针值作为逻辑值使用时,空指针被换成false,非空指针被转换成true<BR><BR>总之:0即是false,非0即是true</P>
<P>9.条件操作符和条件表达式<BR>条件操作符 ?:<BR> 使用格式:条件?表达式1:表达式2<BR>条件表达式<BR>定义:由条件操作符构成的表达式称为条件表达式<BR>表达式的值:条件成立时为表达式1的值,条件不成立时为表达式2的值<BR>例:
(score>=60)? ”pass”:”fail”</P>
<P>条件表达式可以嵌套<BR>例:(x>y)?"great than":((x==y)?"equal to":"less
than")</P>
<P>10.typedef:为一个已有类型名提供一个同义词。 <BR>定义格式:typedef 类型说明符 新类型名</P>
<P>如: typedef int INT,integer ; INT a;//int a; typedef double
profit; profit d; // double d;<BR>11.
表达式的副作用<BR>表达式的副作用:表达式求值过程中,若参与运算的变量的值发生了改变,称此表达式是具有副作用的。</P>
<P>例:int
i=1,j=2;<BR> cout<<(i+j++)<<endl;<BR> cout<<j<<endl;</P>
<P>结果: 3<BR> 3<BR>表达式i+j++具有副作用。</P>
<P>产生副作用的主要原因是引入了具有副作用的操作符。这些操作符包含:<BR>(1)赋值=<BR>(2)复合赋值(+=,-=,*=等)<BR>(3)前增1前减1(++,--)<BR>(4)后增1后减1(++,--)</P>
<P>赋值,复合赋值,前增1和后增1的结果仍然是变量对象,即仍为左值.<BR>数值表达式,常量,后增1和后减1不能为左值.<BR>例: (p+3)-=k;//
× ++k*=5;// √<BR>++5;// × k++*=5;// ×<BR>100=p;// ×</P>
<P>12.逗号表达式<BR>格式:p1,p2,……,pn(其中pi为表达式)<BR>例:int
a,b,c;<BR> a=1,b=a+2,c=b+3;<BR>逗号表达式的值是其中最后一个表达式pn的值。<BR>例:int
a,b,c,d;<BR> d=(a=1,b=a+2,c=b+3);<BR> cout<<d<<endl;<BR> 结果:6</P>
<P align=center></P>
<P align=center><FONT color=#00ff00><B><FONT size=5><A
name=a3></A>第三章 C++程序的流程控制</FONT></B></FONT></P>
<P><FONT color=#ffffff><BR><FONT
color=#ff0000>流程控制与程序结构</FONT></FONT></P>
<P>1.流程控制:控制语句执行的顺序</P>
<P>2.流程控制的方式(三种)<BR>①顺序控制<BR>②条件分支控制<BR>③循环控制</P>
<P><FONT color=#ff0000><A name=a31></A>3.1 程序结构的分类</FONT><FONT
color=#ffffff><BR></FONT><BR>①
顺序结构<BR>②条件分支结构:由if语句和switch语句实现。<BR>③循环结构:由while语句、for语句和do…while语句实现。</P>
<P><FONT color=#ff0000><A name=a32></A>3.2 条件分支结构</FONT><FONT
color=#ffffff><BR></FONT>3.2.1 if语句<BR>设p为条件表达式,s为语句<BR> 格式1:if p
<BR> s;</P>
<P> 格式2:if p<BR> s1;<BR> else<BR>
s2;<BR><BR>例:#include<iostream.h><BR> void main()<BR> {<BR>
int score;<BR> cin>>score;<BR> if(score>=60)<BR>
cout<<“恭喜,你及格了!”;<BR> }</P>
<P>例:#include<iostream.h><BR> void main()<BR> {<BR> int
score;<BR> cin>>score;<BR> if(score>=60)<BR>
cout<<“恭喜,你及格了!”;<BR> else<BR>
cout<<“抱歉,等着补考吧!”;<BR> }</P>
<P>例如:输入两个数找出最大的一个并显示出来。<BR>#include<iostream.h><BR>void
main()<BR>{ int i
,j;<BR>cout<<“输入两个数:”;<BR>cin>>i>>j;<BR>cout<<“两个数中最大的是:”;<BR>if(i>=j)<BR>cout<<i<<endl;
//语句1<BR>else<BR>cout<<j<<endl;
//语句2<BR>}<BR><BR>例:输入三个数,找出其中最大的一个并显示出来。<BR>#include
<iostream.h><BR>void main()<BR>{ int
i,j,k;<BR>cout<<“输入三个数:”;<BR>cin>>i>>j>>k;<BR>cout<<“三个数中最大的是:”;<BR>if(i<j)
i=j;<BR>if(i<k) i=k;<BR>cout<<i<<endl;<BR>}<BR></P>
<P>例:输入三个数,按最大到小的顺序显示出来。<BR>#include <iostream.h><BR>void
main()<BR>{ int
i,j,k,p;<BR>cout<<“输入三个数:”;<BR>cin>>i>>j>>k;<BR>if(i<j)
{p=i; i=j; j=p;}<BR>if(i<k) {p=i; i=k; k=p;}<BR>if(j<k) {p=j;
j=k; k=p;}<BR>cout<<i<<‘ ‘<<j<<‘
‘<<k<<endl;<BR>}<BR><BR>3.2.2
if语句的嵌套<BR>1.解决二义性<BR>例:int x=20;<BR> if(x>=0)<BR>
if(x<50)<BR> cout<<"x is ok\n";//s1<BR>
else<BR> cout<<"x is not
ok\n";//s2<BR><BR>解释1//该解释为正确解释<BR> int x=20;<BR> if(x>=0)<BR>
{<BR> if(x<50)<BR> cout<<"x is ok\n";//s1<BR>
else<BR> cout<<"x is not ok\n";//s2<BR>}</P>
<P>解释2//该解释为错误解释<BR>int
x=20;<BR>if(x>=0)<BR>{<BR>if(x<50)<BR>cout<<"x is
ok\n";//s1<BR>}<BR>else<BR>cout<<"x is not
ok\n";//s2<BR><BR>因为:c++规定,else总是和其前面最近的尚未配对的且可见的if配对。</P>
<P>2.例:输入3个数,找出其中最大的一个并显示出来。(见书)</P>
<P>3.2.3 if多分支结构<BR>格式3:<BR> if p1 s1;<BR> else if p2 s2; <BR> else
if p2 s3; <BR> …<BR> else if pn sn;<BR> [else sn+1 ]</P>
<P>例:#include<iostream.h><BR>void main()<BR>{<BR>int
grade;<BR>cin>>grade;<BR>if(grade>=90)
cout<<“Excellent!”;<BR>else if(grade>=80)
cout<<“Good!”;<BR>else if(grade>=60)
cout<<“Pass!”;<BR>else cout<<“Fail!”;<BR>}</P>
<P>3.2.4 switch语句<BR>1.格式1(不带break语句)<BR>switch (表达式)<BR> { case
常量表达式1:语句1;<BR> case 常量表达式2:语句2;<BR>…<BR> case
常量表达式n:语句n;<BR>[default:语句n+1;]<BR>}<BR><BR>例:switch(dayOfTheWeek)<BR>{
case 0:cout<<“Sunday";<BR>case 1:cout<<“Monday";<BR>case
2:cout<<“Tuesday";<BR>case 3:cout<<“Wednesday";<BR>case
4:cout<<“Thursday";<BR>case 5:cout<<“Friday";<BR>case
6:cout<<“Saturday"; <BR>default:cout<<“Unknow week
day";<BR>}</P>
<P>若dayOfTheWeek的值为4,则输出为
<BR>Thursday<BR>Friday<BR>Saturday<BR>Unknow week day</P>
<P>2.格式2(带有break语句)</P>
<P>switch (表达式)<BR> { case 常量表达式1:语句1;break;<BR> case 常量表达式2:语句2;
break;<BR>…<BR> case 常量表达式n:语句n; break;<BR>[default:语句n+1;
break;]<BR>}</P>
<P>例:switch(dayOfTheWeek)<BR>{ case
0:cout<<“Sunday";break;<BR>case 1:cout<<“Monday";
break;<BR>case 2:cout<<“Tuesday"; break;<BR>case
3:cout<<“Wednesday"; break;<BR>case 4:cout<<“Thursday";
break;<BR>case 5:cout<<“Friday"; break;<BR>case
6:cout<<“Saturday"; break;<BR>default:cout<<“Unknow week
day"; break;<BR>}</P>
<P>若dayOfTheWeek的值为4,则输出为 <BR>Thursday<BR><BR>3.
if多分支结构和switch语句可相互改写。</P>
<P>例:char grade;<BR>switch(grade)<BR>{ case
'A':cout<<"85--100\n";break;<BR>case
'B':cout<<"70--84\n"; break;<BR>case
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -