1.引子(一个简单的实例)
#include<iostream>
using namespace std; //使用命名空间std
int main(){
cout<<"hello world!"<<endl;
cout<<"welcom to c++"<<endl;
return 0;
}
2.词法记号
(1)关键字
是c++语法中预定规定的词汇,它们在程序中有特殊的含义。(没必要特别去记)可以上网搜
(2)标识符
是程序员命名的单词,命名着一些实体(如:函数名,变量名,类名,对象名等.)
命名规则如下:<1>开头用大小写字母或者下划线(不能以数字开头)
<2>可以由大小写字母,下划线,数字0~9组成
<3>区分大小写,代表不同的字母
<4>不能是c++语言关键字或操作符
(3)操作符
用于实现各种运算的符号,例如:+,-,*,/等。还有一些操作符的替代名后续会学
(4)分隔符
用于分隔各个词法记号或程序正文,c++语言中的分隔符是:() {} , : ;
这些分隔符不表示任何实际的操作,仅用于构造程序
3.基本的数据类型
类型名 | 长度 |
bool(false,true)布尔型 | 1 |
char(字符型) | 1 |
signed char | 1 |
unsigned char | 1 |
short(signed short) | 2 |
unsigned short | 2 |
int (signed int)(整型) | 4 |
unsigned int | 4 |
long (signed long) | 4 |
unsigned long | 4 |
long long | 8 |
unsigned long long | 8 |
float(浮点型) | 4 |
double(双精度浮点型) | 8 |
long double | 8 |
signed char=<short int=<int=<long int=<long long int
4.常量
(1)整型常量
表示形式是常见的十进制,八进制,十六进制:
十进制:0~9的数字,但不以0开头
八进制:部分以0开头,一般形式为:0 若干个0~7的数字
十六进制:部分以0x开头,一般形式:0x 0~9个数字及A~F的字母(大小写均可)
(2)实型常量
是以文字形式出现的实数,有两种表现形式:
一般形式:12.5,-12.5等
指数形式:0.345E+2,-34.3E-3,其中字母E可以大写或小写
实型常量默认为double型,如果后缀为F(f)使其成为float型 12.3f
(3)字符常量
是用单引号括起来的一个字符:'a' 'D' '?' '$'
还有一类转义字符:
字符常量形式 | 含义 | 字符常量形式 | 含义 |
\a | 响铃 | \f | 换页 |
\n | 换行 | \\ | 字符\ |
\t | 水平制表符 | \" | 双引号 |
\v | 垂直制表符 | \' | 单引号 |
\b | 退格 | \? | 问号 |
\r | 回车 |
(4)字符串常量
简称字符串,一对双引号括起来的字符序列,例如:"abcd" "china" "This is a string". 双引号是字符串的界限符,所以引号要用转义字符来表示,例如:
"please enter\"yes\" or \"no\""表示的是下列文字:
please enter "yes" or "no"
字符串和字符在内存中的存放形势是不一样的:<1>字符串中的字符按顺序存放,每个字符占一个字节,并在结尾添加'\0'作为结尾标记<2>字符与字符串有所区别
”china" c h i n a \0
"a" a \0
'a' a
(5)布尔常量
只有两个:false(假),true (真)
5.变量
在执行过程中其值可以变化的量称为变量,需要用名字来标识
(1)变量的声明和定义
在使用前需要首先声明其类型和名称 如:int num,total;
float v,r,h;
(2)变量的初始化
在定义一个变量的同时,可以给它设置初始值,称为对变量的初始化。例如:
int a=3;
double f=3.56;
char c='a';
用于初始化变量的值可以是任意的表达式,在同一条定义语句中可以用新定义的变量值去初始化后定义的变量值。例如:
double pi=3.14, c=10.06*pi; //pi首先被初始化,随后被用于初始化c
初始化和赋值时两种不同的操作:初始化时在创建变量的时候赋予其一个初始值,而赋值是将变量当前的值擦除用一个新值替代。
6.符号常量
符号常量使用前一定要首先声明,这一点与变量有点相似,常量声明语句的形式为:
const 数据类型说明符 常量名=常量值;
或者:
数据类型说明符 const 常量名=常量值;
例如,可以声明一个代表圆周率的符号常量:
const float PI =3.1415926;
注意:符号常量在声明时一定要初始化,而在程序中间不能改变其值。例如:下面语句是错误:
const float PI ; //错!常量在声明是必须被初始化
PI =3.1415926; //错!常量不能再被赋值
7.运算符和表达式
(1)算术运算符和算术表达式
由算术运算符,操作数和括号构成的表达式称为算术表达式。
基本算术运算符有:+ , -,*, /, %。先乘除后加减,同级运算自左向右
%取余,只能用于整型操作数,%优先级和/相同
/ 除法运算,注意:当/用于两个整型数据相除时,结果取商的整数部分,小数部分自动舍弃。因此1/2的结果为0
++(自增) --(自减)
如果i=1
cout<<i++; //首先使i自增为2,然后输出i自增前的值1;
cout<<++i; //首先使i自增为2.然后输出i自增后的值2;
(2)赋值运算符和赋值表达式
最简单的赋值运算符:“=” 带有赋值运算符的表达式称为赋值表达式
还有另外10种复合的赋值表达式:+=,-=,*=,/=,%=,<<=,>>=,&=, ^=, |=。都是二元运算符,优先级和“=”相同,结合性也是自右向左,例如:
a+=3 a=a+3
x*=y+8 x=x*(y+8)
a+=a-=a*a a=a+(a=a-a*a)
(3)逗号运算和逗号表达式
表达式1,表达式2
求解顺序是先求解1,再求解2,最后结果为表达式2的值。
a=3*5,a*4 最终结果为0
(4)逻辑运算与逻辑表达式
关系运算符是比较简单的逻辑运算,优先级次序为:
< , <= , > , >= , == , !=
优先级相同(较高) 优先级相同(较低)
关系表达式时一种最简单的逻辑表达式,结果类型为bool,值只能为true 或 false
若只有简单的关系比较是远不能满足编程的需要的,还需要逻辑运算符将简单的关系表达式连接起来,构成复杂的逻辑表达式,逻辑表达式的结果类型为bool,值只能为true或者false
!(非) &&(与) ||(或)
高 ——> 低
优先级次序:
“!”是一元运算符,使用形式是!a
&&和||都是二元运算符
&&当两个操作数的值都为true时,与运算结果才为true,其他情况下"与“运算均为false
||当两个操作数的值都为false时,或运算结果才为false,其他情况下”或“运算均为true
例如,假设已有如下声明:
int a=5,b=3,x=10,y=20;
则逻辑表达式(a>b)&&<x>y)的值为false
(5)条件运算符与条件表达式
c++中唯一的一个三元运算符是条件运算符"?",它能够实现简单的选择功能。表现形式:
表达式1?表达式2:表达式3
(表达式1必须是bool类型,表达式2和3可以是任意类型,且类型可以不同)
执行顺序是:先求表达式1.若表达式1的值是true,则求解表达式2,表达式2的值是最终结果;若表达式1的值是false,则求解表达式3的值,表达式3的值为最终值。
注意:条件表达式优先级高于赋值表达式,低于逻辑表达式
应用举例:
设a 和b是两个整型变量,则表达式(a<b)?a:b的功能是求出整数a和b中较小数的值。
设变量score中存放某同学的成绩,现需对成绩进行判断,若成绩大于或等于60,则输出”pass“,否则输出"fail"。下列语句可以实现这一功能:
cout<<(scre>=60?"pass":"fail");
(6)sizeof运算符
sizeo运算符用于计算某种类型的对象在内存中所占的字节数。使用的语法形式:
sizeof(类型名)
或
sizeof(表达式)