C++学习笔记之C++初识,数据类型,运算符,程序流程结构


一、C++初识

1.编写hello world

一个函数的定义包括四个部分:返回类型、函数名、形参列表、函数体

#include<iostream>
using namespace std;

int main()
{
	cout << "hello world\n"; 		 		// 换行
    cout << "hello world" << endl;           //endl 被称为操作符,效果是换行,清空缓冲区并将其实际写入设备
	
	system("pause");						//暂停黑窗口,输入任意键后继续
	
	return 0;
}

2.测试system(“pause”);暂停窗口的代码

#include<iostream>
#include <cstdio>
using namespace std;

int main()
{

cout << "本进程执行过程中的第一处暂停位置!" << endl; 

system("pause");


cout << "本进程执行过程中的第二处暂停位置!" << endl; 

system("pause");
return 0;
}

运行结果图片:运行结果

3.C++定义常量

(1)#define 宏常量 #define 常量名 常量值
(2)const 修饰的变量 const 数据类型 常量名 = 常量值

区别:

  • #define是定义宏变量,是在编译之前,由预处理指令把代码里面的宏变量用指定的字符串替换,它不做语法处理,而const是定义含有变量类型的常量

  • 一般来说推荐使用const定义常量,它在编译时会做语法处理。 Effective c++ 的条款1中:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分。而且有时候用宏,会出现意想不到的输出结果。

两者比较:

  • const常量有数据类型,而宏变量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,并且在字符替换可能会产生意料不到的输出结果。
  • 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试

4.C++关键字

这些关键字不能作为常量名、变量名或其他标识符名称
c++关键字

5.C++标识符

C++规定给标识符(变量、常量)命名时,有一套规则
(1)标识符不能是关键字
(2)标识符只能由字母、数字、下划线组成
(3)第一个字符必须为字母或下划线
(4)标识符中字母区分大小写

示例:
mohd _temp j a23b9 rVtdh

6.转义字符

作用:用于表示一些不能显示出来的ASCII字符
在这里插入图片描述
示例:水平制表符\t
cout <<"aaa\tbbb" <<endl; 显示的结果是aaa bbb;(在aaa后面会有5个空格)
cout <<"aaaa\tbbb" <<endl; 显示的结果是aaaa bbb;(在aaaa后面会有4个空格)

7. 编译、运行程序

$ g++ ./test.cpp -o test

$ ./test.out

使用参数-std=c++11来开启C++ 11标准支持

$ g++ -std=c++11 test_c11.cpp

二、数据类型

1.整型

作用:整型变量表示的是整数类型的数据
C++中能够表示整型的类型有以下几种方式, 区别在于所占内存空间的不同

数据类型占用空间取值范围
short(短整型)2字节-32768到 32767
int (整型)4字节-2147483648 到 2147483647
long (长整型)Windows为 4字节,Linux为4字节(32位),8字节(64位)-2^31 ~ 2 ^31-1
long long (长长整型)8字节-2^63 ~ 2 ^63-1

2.sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存大小(字节)
语法:sizeof(数据类型/变量)

	cout << "short 类型所占内存空间为:" << sizeof(short) << endl; 
	cout << "int 类型所占内存空间为:" << sizeof(int ) << endl; 
	cout << "long int 类型所占内存空间为:" << sizeof(long int) << endl; 
	cout << "long long 类型所占内存空间为:" << sizeof(long long ) << endl; 

3.实型(浮点型)

作用:用于表示小数
如下图,两者的区别在于表示的有效数字范围不同

数据类型占用空间有效数字范围
单精度float4字节7位有效数字
双精度double8字节15~16位有效数字

示例:

// 浮点常数通常以 double 类型存储在内存中。如果需要强制将这类常数存储为 float 类型,则可以将 F 或 f 字母附加到其末尾。	
	float f1 = 3.14f;		//后面加个f
	double f2 = 3.14;		
	
//默认情况下,输出一个小数,会显示出6位有效数字
	float f1 = 3.14156897f;
	cout << f1 << endl;
	double f2 = 3.14156897;
	cout << f2 << endl;	
/*输出的是3.14157
		 3.14157   */
//科学计数法
	float d1 = 3e2; //3 * 10^2;
	float d2 = 3e-2; //3 * 0.1^2;

输出时要小数点后保留几位小数的问题

1.两种简单地使用方式 其实就是一种

第一种:cout<<setiosflags(ios::fixed)<<setprecision( n)<<num;这里的n就是要保留几位小数

第二种:cout<<fixed<<setprecision(n)<<num;其实就是第一种的简写

//控制输出时要小数点后保留几位小数,会四舍五入  	必要头文件#include<iomanip>
	cout << setiosflags(ios::fixed) << setprecision(6) << f3 << endl;//3.141569		
	cout << fixed << setprecision(7) << f4 << endl;                  //3.1415690	

输出时保留几位有效数字的问题

#include<iomanip>	//必要头文件
#include<iostream> 
using namespace std;
int main()
{
	double num = 3.14159; 										
	cout << "原数:" << num << endl;								//3.14159

	cout << "保留两位有效数字:" << endl;
	//{
	     cout <<setprecision(2) << num << endl;                       //3.1
    //}

	cout << "保留三位有效数字:" << endl;
	 //{
		 cout << setprecision(3) << num << endl;                      //3.14
	 //}

	cout << "保留四位有效数字:" << endl;
	 //{
		 cout << setprecision(4) << num << endl;                     //3.142
	 //}

	cout << "保留五位有效数字:" << endl;
     //{
		 cout << setprecision(10) << num << endl;                  //3.14159  注意这里并不会补零
     //}
	system("pause");
	return 0;
}

4.字符型

作用:字符型变量用于显示单个字符
语法:char ch = ‘a’ ;

注意:(1)创建字符型变量时,要用单引号
(2)单引号内只能有一个字符,不可以是字符串

●C和C++中字符型变量只占用1个字节。
●字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元

	char ch = 'a';
	cout << sizeof(char) << endl;	//查看内存大小
	cout << (int )ch << endl;	//查看字符a对应的ASCII编码 

	char ch1 = 97;		//可以直接用ASCII给字符型变量赋值 
	cout << ch1 << endl; 

5.字符串型

作用:用于表示一串字符
两种风格
1.C风格字符串:char 变量名[] = "字符串值"
注意:C风格的字符串要用双引号括起来

	char str1[] = "helloworld";
	cout << str1 << endl;

2.C++风格字符串:string 变量名 = "字符串值"
注意:C++风格字符串,需要加入头文件#include<string>

	string str1 = "helloworld";
	cout << str1 << endl;

6.bool类型

作用:布尔数据类型代表真或假的值
bool类型只有两个值:
●true-----真(本质是1)
●false----假(本质是0)
bool类型只占一个字节

	bool flag = true;
	cout << flag << endl; //1
	bool flag1 = false;
	cout << flag1 << endl;

7.数据的输入

作用:用于从键盘上获取数据
关键字:cin
语法:cin >> 变量

	int a;
	cin >> a ;
	cout << a << endl;

三、运算符

1.算术运算符

假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符描述实例
+把两个操作数相加A + B 将得到 30
-从第一个操作数中减去第二个操作数A - B 将得到 -10
*把两个操作数相乘A * B 将得到 200
/分子除以分母B / A 将得到 2
%取模运算符,整除后的余数B % A 将得到 0
++自增运算符,整数值增加 1A++ 将得到 11
自减运算符,整数值减少 1A-- 将得到 9

2.关系运算符

假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。(A == B) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。(A != B) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(A > B) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。(A < B) 为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(A >= B) 不为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(A <= B) 为真。

3.逻辑运算符

作用:用于根据表达式的值返回真值或假值
假设变量 A 的值为 1,变量 B 的值为 0,则:

运算符描述实例
&&称为逻辑与运算符。如果两个操作数都非零,则条件为真。(A && B) 为假。
||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。(A
!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。!(A && B) 为真。

4.位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:
&:按位与 ------上下乘
| :按位或--------1+0=1 1+1 =1
^ : 按位异或------不同为真,相同为假
~ :按位求反------完全相反
<< :二进制左移运算符
>>::二进制右移运算符
(空出来的位置会用0补充)

pqp & qp|qp ^ q
00000
01011
11110
10011

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101


A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

A << 2 = 1111 0000
A >>2 = 0000 1111

5.赋值运算符

运算符实例
=C = A + B 将把 A + B 的值赋给 C
+=C += A 相当于 C = C + A
-=C -= A 相当于 C = C - A
*=C *= A 相当于 C = C * A
/=C /= A 相当于 C = C / A
%=C %= A 相当于 C = C % A
<<=C <<= 2 等同于 C = C << 2
>>=C >>= 2 等同于 C = C >> 2
&=C &= 2 等同于 C = C & 2
^=C ^= 2 等同于 C = C ^ 2
|=C |= 2 等同于 C = C | 2

6.C++ 中的运算符优先级

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

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

四、程序流程结构

1.选择结构

C++ 编程语言提供了以下类型的判断语句。

语句描述
if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if…else 语句一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
switch 语句一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句您可以在一个 switch 语句内使用另一个 switch 语句。

? : 运算符

可以用来替代 if…else 语句。它的一般形式如下:

Exp1 ? Exp2 : Exp3;

如果 Exp1 为真,则计算 Exp2 的值.
如果 Exp1 为假,则计算 Exp3 的值.
结果即为整个表达式的值。

2.循环结构

1.循环类型

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

2.跳转语句

(1)break 语句

作用:用于跳出选择结构或循环结构
break使用的时机
●出现在switch条件语句中,作用是终止case 并跳出switch
●出现在循环语句中,作用是跳出当前的循环语句
●出现在嵌套循环中,跳出最近的内层循环语句

(2)continue语句

作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

	int i;
	//如果是奇数输出,偶数不输出 
	for(i = 0; i< 100; i++)
	{
	if(i % 2 == 0 ){
	continue;  //后面跳过,然后开始下一个循环
		}
	cout << i <<endl ; 
	}
(3)goto语句

作用:可以无条件跳转语句
语法:goto标记
注意:在程序中不建议使用goto语句,以免造成程序流程混乱

int main()
{
	cout << "1" << endl;
	goto FLAG;
	cout << "2" << endl;
	cout << "3" << endl;
	cout << "4" << endl;
	
	FLAG:
	cout << "5" << endl;
     /*输出结果为  1
     			  5  */                                     				  
	return 0; 
}

3.无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环

 for( ; ; )
   {
      printf("This loop will run forever.\n");
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值