C++简介——数据类型、运算符、语法结构

基本语法—注释
注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。
注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。
注释只是为了提高可读性,不会被计算机编译。
//单行注释
/*
多行注释
多行注释
/*

基本语法—标识符
标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。
一个标识符以字母A-Z或a-z或下划线_开始,后跟零个或多个字母、下划线和数字(0-9)。
标识符内不允许出现标点字符,比如@、&和%。
C++是区分大小写的编程语言。

基本语法—关键字
C++关键字
auto、false、static、using、if、goto、static_cast、bool、true、public、namespace、else、and、const_cast、char、enum、protected、inline、for、not、dynamic_cast、int、union、private、new、while、or、reinterpret_cast、short、struct、virtual、delete、do、xor、static_assert、long、class、override、this、switch、return、register、float、wchar_t、final、nullptr、case、try、explicit、double、sizeof、operator、void、default、catch、extern、signed、typeid、const、friend、break、throw、unsigned、typedef、constexpr、templat、continue、noexcept。

七种基本数据类型:
字符:bool、char、void、wchar_t
整数:int、short、long
浮点型:float、double
限定符:
const:const类型的对象在程序执行期间不能被修改改变
volatile:修饰符volatile告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。
restrict:由restrict修饰的指针是唯一一种访问它所指向的对象的方式。只有C99增加了新的类型限定符restrict。
修饰符:signed、unsigned、short、long

各数据类型大小:数据类型在不同系统中所占空间的大小,这个与机器、操作系统、编译器有关。比如同样是在32bits的操作系统、VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节

typedef声明:
使用typedef为一个已有的类型取一个新的名字。
目的一般有两个:
一个是给变量一个易记且意义明确的新名字
另一个是简化一些比较复杂的类型声明
语法如下:
typedef type newname
eg:
typedef int feet
feet distance
typedef还可以掩饰复合类型,如指针和数组。

例如,你不用像下面这样重复定义有81个字符元素的数组:
char line[81];
char text[81];
只需这样定义,Line类型即代表了具有81个元素的字符数组,使用方法如下:
typedef char Line[81];
Line text,line;
getline(text);
同样,可以像下面这样隐藏指针语法:
typedef char* pstr;
int mystrcmp(const pstr p1,const pstr p3);

枚举类型:
C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合;枚举元素是一个整型,枚举型可以隐式的转换为int型,int型不能隐式的转换为枚举型。
//枚举类型的语法
enum 枚举名
{
标识符[=整型常数],
标识符[=整型常数],

标识符[=整型常数]
}枚举变量;
如果枚举没有初始化,即省掉“=整型常数”时,则从第一个标识符开始递增;默认第一个标识符的值是0;
enum course
{
math,
Chinese,
English,
Physics,
Chemistry
}C;
course d=Physics;
c=english;
cout<<c<<endl;

变量:变量其实只不过是程序可操作的存储区的名称。
C++中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。

变量的声明和定义:
变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。
可以在C++程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
多个变量赋同一个值时,需要分别赋值。
int x=y=z=66;//错误
int x=1,y=1,z=1;
int x,y,z=4;x=y=z;
变量的声明(不分配内存):extern数据类型 变量名;
变量的定义:数据类型 变量名1,变量名2,…变量名n;
//变量声明
extern int a,b;
int main()
{
//变量定义
int a,b;
//初始化
a=23;
b=25
return 0;
}

变量的作用域
局部变量:在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或代码块内部的语句使用。
全局变量:在所有函数外部定义的变量(通常是在函数的头部),称为全局变量。全局变量的值在程序的整个生命周期都是有效的。
局部变量和全部变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。
当局部变量被定义时,系统不会对其初始化;
定义全局变量时,系统会自动初始化值:int float double 0,char’\0’,指针NULL
int i=66;
int main()
{
int i=88;
cout<<i<<endl;//多少
return 0;
}

int i=66;
float f;
double d;
char c;
int*p;
int main()
{
cout<<i<<f<<d<<c<<p<<endl;//多少
return 0;
}

运算符
*算术运算符:+ - * / % ++ –
*关系运算符:== != < > >= <=
*逻辑运算符:&& || !
*位运算符:& | ~ ^ << >>
*赋值运算符:= += -= *= /= %= <<= >>= &= ^= !=
*杂项运算符:
sizeof //返回变量的大小
Con?X:Y //三元运算符
, //逗号表达式,值为最后一个表达式的值
.和-> //用于引用类、结构和公用体的成员
& //指针运算符 返回变量的地址

  • //指针运算符 指向一个变量

++和–
自增、自减运算符(++ --)作用是使变量的值增1或减1
i++与++i的区别:
++i是先执行i=i+1后再使用i的值;
i++是先使用i的值后,再执行i=i+1。
例如:
j=++i; //如果i的初值是3,则i的值先变成4,再赋给j,j的值均为4。
j=i++; //如果i的初值是3,先将i的值3赋给j,j的值为3,然后i变为4。

逻辑运算符:下表显示了C++支持的关系逻辑运算符。
假设变量A的值为1,变量B的值为0,则:
&&:称为逻辑与运算符。如果两个操作数都非零,则条件为真。
例:A&&B为假
||:称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。
例:A||B为真
!:称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。
例:!(A&&B)为真

位运算符
&:如果同时存在于两个操作数中,二进制AND运算符复制一位到结果中。A&B将得到12,即为00001100
|:如果存在于任一操作数,二进制OR运算符复制到一位到结果中。A|B将得到61,即为00111101
:如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。AB将得到49,即为00110001
:二进制补码运算符是一元运算符,具有“翻转”位效果,即0变成1,1变成0。A将得到-61,即为11000011,一个有符号的二进制数的补码形式
<<:二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A<<2将得到240,即为11110000

:二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A>>2将得到15,即为00001111

运算符优先级
后缀:() [] -> . ++ – 从左到右
一元:+ - ! ~ ++ – (type)* & sizeof 从右到左
乘除:* / % 从左到右
加减:+ - 从左到右
移位:<< >>从左到右
关系:< <= > >= 从左到右
相等:== != 从左到右
位与AND:&  从左到右
位异或XOR:^ 从左到右
位或OR:| 从左到右
逻辑与AND:&& 从左到右
逻辑或OR:|| 从左到右
条件:?: 从右到左
赋值:= += -= *= /= %= >>= <<= &= ^= |=
逗号:,从左到右

语法结构
判断结构:C++判断
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必须的)和条件为假时要执行的语句(可选的)。
判断语句:C++编程语言提供了以下类型的判断语句。
if语句:一个if语句由一个bool表达式后跟一个或多个语句组成
if…else语句:一个if语句后可跟一个可选的else语句,else语句在bool表达式为假的时候执行。
嵌套if语句:您可以在一个if或else if语句内使用另一个if或if else语句。
switch语句:一个switch语句允许测试一个变量等于多个值时的情况。
嵌套switch语句:您可以在一个switch语句内使用另一个switch语句。

?:运算符:可以用来替换if…else语句。它的一般形式如下:
Exp1?Exp2:Exp3;
其中,Exp1、Exp2和Exp3是表达式。请注意,冒号的使用和位置。
?表达式的值是由Exp1决定的。如果Exp1为真,则计算Exp2的值,结果即为整个?表达式的值。如果Exp1为假,则计算Exp3的值,结果即为整个?表达式的值。

if语法:
if(boolean_expression)
{
//如果布尔表达式为真将执行的语句
}
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=10;
//使用if语句检查布尔条件
if(a<20)
{
//如果条件为真,则输出下面的语句
cout<<“a小于10”<<endl;
}
cout<<"a的值是 "<<a<<endl;

return 0;

}
运行结果:
a小于20
a的值是10

if…else…语法:
if(boolean_expression)
{
//如果布尔表达式为真将执行的语句
}
else
{
//如果布尔表达式为假将执行的语句
}
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=100;
//检查布尔条件
if(a<20)
{
//如果条件为真,则输出下面的语句
cout<<“a小于20”<<endl;
}
else
{
//如果条件为假,则输出下面的语句
cout<<“a大于20”<<endl;
}
cout<<“a的值是”<<a<<endl;
return 0;
}
运行结果:
a大于20
a的值是100

嵌套if语法:
if(boolean_expression 1)
{
//当布尔表达式1为真时执行
if(boolean_expression 2)
{
//当布尔表达式2为真时执行
}
}
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=100;
int b=200;
//检查布尔条件
if(a100)
{
//如果条件为真,则检查下面的条件
if(b
200)
{
//如果条件为真,则输出下面的语句
cout<<“a的值是100,且b的值是200”<<endl;
}
}
cout<<“a的准确值是”<<a<<endl;
cout<<“b的准确值是”<<b<<endl;
return 0;
}
运行结果:
a的值是100,且b的值是200
a的准确值是100
b的准确值是200

switch语法:
switch(expression){
case constant-expression;
statement(s);
break;//可选的
case constant-expression ;
statement(s);
break;//可选的
//您可以有任意数量的case语句
default;//可选的
statement(s);
}
示例:
#include
using namespace std;
int main()
{
//局部变量声明
char grade=‘D’;
switch(grade)
{
case ‘A’;
cout<<“很棒”<<endl;
break;
case ‘B’;
case ‘C’;
cout<<“做得好”<<endl;
break;
case ‘D’;
cout<<“您通过了”<<endl;
break;
case ‘F’;
cout<<“最好再试一下”<<endl;
break;
default;
cout<<“无效的成绩”<<endl;
}
cout<<“您的成绩是”<<grade<<endl;
return 0;
}
运行结果:
您通过了
您的成绩是D

switch语句必须遵循下面的规则:
*switch语句中的expression必须是一个整型或枚举类型,或者是一个class类型,其中class有一个单一的转换函数将其转换为整型或枚举类型。
*在一个switch中可以有任意数量的case语句。每个case后跟一个要比较的值和一个冒号。
*case的constant-expression必须与switch中的变量具有相同的数据类型,且必须是一个常量或字面量。
*当被测试的变量等于case中的常量时,case后跟的语句将被执行,直到遇到break语句为止。
*当遇到break语句时,switch终止,控制流将跳转到switch语句后的下一行。
*不是每一个case都需要包含break。如果case语句不包含break,控制流将会继续后续的case,直到遇到break为止。
*一个switch语句可以有一个可选的default case,出现在switch的结尾。default case可用于在上面所有case都不为真时执行的一个任务。default case中的break语句不是必需的。

嵌套switch语法:
switch(ch1){
case ‘A’:
cout<<“这个A是外部switch的一部分”;
switch(ch2){
case ‘A’:
cout<<“这个A是内部switch的一部分”;
break;
case ‘B’: //内部B case代码
}
break;
case ‘B’😕/外部B case代码
}

循环语句:
一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。有的时候,可能需要多次执行同一块代码…

循环类型:C++编程语言提供了以下几种循环类型。
while循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
for循环:多次执行一个语句序列,简化管理循环变量的代码。
do…while循环:除了它是在循环主体结尾测试条件外,其他与while语句类似
嵌套循环:您可以在while、for或do…while循环内使用一个或多个循环

循环控制语句:循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。
break语句:终止loop或switch语句,程序流将继续执行紧接着loop或switch的下一条语句
continue语句:引起循环跳过主体的剩余部分,立即重新开始测试条件
goto语句:将控制转移到被标记的语句。但是不建议在程序中使用goto语句。

while循环的语法:
while(condition)
{
statement(s);
}
只要给定的条件为真,while循环语句会重复执行一个目标语句。
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=10;
//while循环执行
while(a<20)
{
cout<<“a的值是”<<a<<endl;
a++;
}
return 0;
}
运行结果:
a的值是10
a的值是11
a的值是12
a的值是13
a的值是14
a的值是15
a的值是16
a的值是17
a的值是18
a的值是19

for循环的语法:
for(init;condition;increment)
{
statement(s);
}
#include
using namespace std;
int main()
{
//for循环执行
for(int a=10;a<20;a=a+1)
{
cout<<“a的值是”<<a<<endl;
}
return 0;
}
运行结果:
a的值是10
a的值是11
a的值是12
a的值是13
a的值是14
a的值是15
a的值是16
a的值是17
a的值是18
a的值是19

do…while循环的语法:
do
{
statement(s);
}while(condition);
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=10;
//do循环执行
do
{
cout<<“a的值是”<<a<<endl;
a=a+1;
}while(a<20);
return 0;
}
运行结果:
a的值是10
a的值是11
a的值是12
a的值是13
a的值是14
a的值是15
a的值是16
a的值是17
a的值是18
a的值是19

嵌套循环的语法:
for(init;condition;increment)
{
for(init;condition;increment)
{
statement(s);
}
statement(s);//可以放置更多的语句
}
关于嵌套循环有一点值的注意,您可以在任何类型的循环内嵌套其他任何类型的循环。比如,一个for循环可以嵌套在一个while循环内,反之亦然。

break语句的语法:
当break语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
它可用于终止switch语句中的一个case。
如果使用的是嵌套循环(即一个循环内嵌套另一个循环),break语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=10;
//do循环执行
do
{
cout<<“a的值是”<<a<<endl;
a=a+1;
if(a>15)
{
//终止循环
break;
}
}while(a<20);
return 0;
}

continue语句的语法:
示例:
#include
using namespace std;
int main()
{
//局部变量声明
int a=10;
//do循环执行
do
{
if(a==15)
{
//跳过迭代
a=a+1;
continue;
}
cout<<“a的值是”<<a<<endl;
a=a+1;
}while(a<20);
return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值