Part_one C/C++语言数据类型、运算符与表达式

发布于:2024-10-12 ⋅ 阅读:(13) ⋅ 点赞:(0)

1.0 编写第一个C++程序

1.打开Visual Studio点击"创建新项目"

2.点击"空项目",并点击"下一步"

3.设置"项目名称"并"设置地址"

4.打开项目后,右击"源文件"并选择"添加"的"新建项"

5.点击"C++文件",设置文件名称并点击"添加"

6.在"hello_word"文件下编写代码并点击运行

7.运行结果如下:

1.1 注释

作用:在代码中加一些说明和解释,方便自己和其他程序员阅读代码
两种格式:
1.单行注释: // 描述信息
    通常放在一行代码的上方或者一条语句的末尾,对该行代码说明
2.多行注释: /*描述信息*/
    通常放在一段代码的上方对该段代码做整体说明
  
  提示:编译器在编译代码时会忽略注释的内容

1.编写代码并添加注释信息

2.由于注释不参加编译,运行效果和1.1一样

3.代码如下:

#include<iostream>
using namespace std;

/*
	main是一个程序的入口,
	每个程序都必须有这么一个函数且有且仅有一个!!!
	可以对源文件下不同文件的main函数取不同名称来避免系统出错
*/

int main()
{
	//这行代码的含义是在屏幕输出:"Hello C++"
	cout << "HELLO C++ !!!" << endl;

	system("pause");

	return 0;
}

1.2 变量和常量

1.2.1 变量

给一段指定的内存空间起名,方便操作/管理这段内存
语法: 数据类型 变量名 = 初始值;

代码及效果如下:

#include<iostream>
using namespace std;

int main()
{
	//变量创建的语法
	int a = 10;
	cout << "变量a的值为:" << a << endl;
	system("pause");
	return 0;
}

1.2.2 常量

用于记录程序中不可更改的数据
C++定义常量两种方式:
1.#define宏常量,通常在函数体上方定义表示一个常量
    #define 常量名 常量值

2.const修饰的变量,通常在变量定义前加关键字const
    const 数据类型 变量名 = 变量值;

代码及效果如下:

#include<iostream>
using namespace std;

//1.#define定义宏常量
#define DAY 7

int main()
{

//2.const修饰变量
	const int a = 10;

	cout << "一周有" << DAY << "天" << endl;
	cout << "常量a的值为:" << a << endl;
	system("pause");
	return 0;
}

1.3 关键字和标识符

1.3.1 关键字

C++关键字_百度百科

关键字/标识符是C++中预先保留的单词
在定义变量或者常量时不可以使用关键字

1.3.2 标识符

C++在使用标识符(变量、常量)命名时有一套自己的规则:
   1.标识符不能是关键字
   2.标识符只能由字母、数字、下划线组成
   3.第一个字符必须为字母或下划线
   4.标识符中字母区分大小写
建议:给标识符起名时最好能够见名知意

1.4 数据类型

C++规定创建变量/常量时,必须指出相应的数据类型否则无法给变量分配合适的内存空间

1.4.1 整数型

数据类型 占用空间
short(短整型) 2字节
int(整型) 4字节
long(长整型) Windows为4字节
long long(长长整型) 8字节

结论:short < int <=long <=long long

1.4.2 sizeof关键字

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

代码及效果如下:

#include<iostream>
using namespace std;

int main()
{
	cout << "短整数型short所占空间大小为:" << sizeof(short) << endl;
	cout << "整数型int所占空间大小为:" << sizeof(int) << endl;
	cout << "长整数型long所占空间大小为:" << sizeof(long) << endl;
	cout << "长长整数型long lomg所占空间大小为:" << sizeof(long long) << endl;
	system("pause");
	return 0;
}

1.4.3 实型(浮点型)

用于表示小数
浮点型变量分为两类:
  1.单精度:float
      float 变量名 = 变量值f;
  2.双精度:double
      double 变量名 = 变量值;
C++系统默认小数为double型,在float变量值后加f表示这是一个float型实数
两者的区别在于表示的有效数字范围不同

实型数据的两种表示形式:
    1.十进制小数形式
    2.科学计数法:
      eg:3e2  == 3*10`2    10的2次方
      eg: 3e-2 == 3*10`-2   10的负2次方
数据类型 占用空间 有效数字范围
float 4字节 7位有效数字
double 8字节 15-16位有效数字

代码及效果如下:

#include<iostream>
using namespace std;

int main()
{
	//单精度
	float f1 = 3.14f;
	//双精度
	double d1 = 0.0015926;
	cout << "f1=" << f1 << endl;
	cout << "d1=" << d1 << endl;
	system("pause");
	return 0;
}

1.4.4 字符型和转义字符

1.4.4.1 字符型数据

ASCII码对照表-BeJSON.com

字符型变量用于显示单个字符
语法:char 变量名 = '变量值' ;

  注意1:在显示字符型变量时,用单引号将字符括起来,不能用双引号!
  注意2:单引号内只能有一个字符,不可以是字符串

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

代码及效果如下:

#include<iostream>
using namespace std;

int main()
{
	char c1 = 'a' ;
	cout << "字符型c1的值为:" << c1 << endl;
	cout << "字符型数值所占内存空间大小为:" << sizeof(char) << endl;
	cout << "字符型变量对应的ASCII值:" << (int)c1 << endl;
	system("pause");
	return 0;
}

1.4.4.2 转义字符

转义字符_百度百科

用来表示一些不能显示出来的ASCII字符
现阶段我们常用的转义字符有:\n  \\  \t
转义字符 含义
\n 换行
\t 水平制表
\\

代表一个反斜线字符"\"

作用:可以整齐的输出数据

代码及效果如下:

#include<iostream>
using namespace std;

int main()
{
	//换行符:\n
	cout << "hello word\n";

	//制表符:\t
	cout << "aaaa\thello-word" << endl;
	cout << "aa\thello-word" << endl;
	cout << "aaaaaa\thello-word" << endl;

	//反斜杠:
	cout << "我要输出一个反斜线:\\" << endl;
	system("pause");
	return 0;
}

1.4.4.3 字符串类型

用于表示一串字符
两种风格--
C语言风格字符串:char 变量名 [] = "字符串值";
C++语言风格字符串:string 变量名  = "字符串值";

注意:
  在使用C++语言风格字符串变量时一定要加上头文件:#include<string>

代码及实现效果如下:

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

int main()
{
	//C语言风格关键字
	char c1[] = "hello word!";

	//C++语言风格关键字
	string s1 = "welcome to C++";
	cout << "C语言风格关键字c1:\t" << c1 << endl;
	cout << "C++语言风格关键字s1:\t" << s1 << endl;

	system("pause");
	return 0;
}

1.4.5 各类数值间的混合运算

整型、字符型、浮点型数据之间可以混合运算
注意:在不同类型数据之间进行运算时,数据类型结果会由低向高转变

代码及实现效果如下:

#include<stdio.h>

int main()
{
    //双精度浮点型占位符不会写先用长整型代替!
	char a='a' , b='b';
	long long result = 10 + a + 1.5 - 56.1234 * b;  
	printf("sum的结果为:%d",result);
	return 0; 
 } 

1.4.6 布尔类型

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

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	//1.创建bool数据类型
	bool flag = true;
	cout << flag << endl;
	flag = false;
	cout << flag << endl;

	//2.查看bool类型占用空间大小
	cout << "bool数据类型占用空间大小为:"<<sizeof(bool) << "字节" << endl;
	system("pause");
	return 0;
}

1.4.7 数据的输入

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

代码及实现效果如下:

#include<iostream>
using namespace std;
#include<string>
 
int main()
{
	//bool数据类型 
	bool flag = true;
	cout<<"当前bool类型的值为:"<<flag<<endl;
	cout<<"请输入bool类型的值:"<<endl;
	cin>>flag;
	cout<<"修改后bool型数据的值为:"<<flag<<endl; 
	system("pause");
	return 0;
 } 

1.5 运算符与表达式

用于执行代码的运算

1.5.1 算术运算符和算术表达式

1.5.1.1 基本的算术运算符和算术表达式

+ 加法运算符/正值运算符
- 减法运算符/负值运算符
* 乘法运算符
/ 除法运算符
 % 取余运算符/模运算符(本质就是求余数)

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	//加减乘除 取余
	int num1 = 3;
	int num2 = 10;
	int add = num1 + num2;
	int subtract  = num2 - num1;
	int multiply  = num1 * num2;
	double divide = num2 / num1;  //在C和C++中两个整数相除结果还是整数 
	int remainder = num2 % num1;
	cout <<"num1与num2相加结果为:\t"<< add <<endl;
	cout <<"num1与num2相减结果为:\t"<< subtract <<endl;
	cout <<"num1与num2相乘结果为:\t"<< multiply <<endl;
	cout <<"num1与num2相除结果为:\t"<< divide   <<endl; 
	cout <<"num1与num2取余结果为:\t"<< remainder<<endl; 

	system("pause");
	return 0;
}

1.5.1.2 强制类型转换运算符

利用强制类型转换运算符将一个表达式转换成所需类型
语法:(类型名)(表达式)  eg:
   (double)a   (int)(x+y)   (float)(5%3)

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	float f1 =314.159f; 
	int num;
	num = (int)f1;
	cout<<"num=\t"<<num<<endl; 
	cout<<"num/2=\t"<<(num/2)<<endl;
	system("pause");
	return 0; 
 } 

1.5.1.3 自增、自减运算符

作用是使变量的值增1或减1
粗略地看,++i和i++的作用相当于i=i+1。但++i与i++不同之处在于++i是先执行i=i+1后,
再使用i的值;而i++是先使用i的值后再执行i=i+1
运算符 示例 结果
前置递增 ++i i=2 ; j=++i i=3 ; j=3
后置递增 i++ i=2 ; j=i++ i=3 ; j=2
前置递减 --i i=2 ; j =--i i=1 ; j=1
后置递减 i-- i=2 ; j = i-- i=1 ; j=2

1.5.2 赋值运算符和赋值表达式

赋值符号"="称为:赋值运算符,它的作用是将一个数据赋给一个变量。
如"a=3"的作用是执行一次赋值操作/赋值运算:把常量3赋给变量a;
也可以将一个表达式的值赋给一个变量。
运算符 术语 示例 & 结果
= 赋值 a=5;b=3
+= 加等于 a+=b;a=8
-= 减等于 a-=b;a=2
*= 乘等于 a*=b;a=15
/= 除等于 a/=b;a=1
%= 取余等于 a%=b;a=2

1.5.3 比较运算符

用于表达式的比较,并返回一个真值或假值
运算符 术语 示例 结果
== 等于 4==3 0
!= 不等于 4!=3 1
< 小于 4<3 0
> 大于 4>3 1
<= 小等于 4<=3 0
>= 大等于 4>=3 1

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	 int a = 10;
	 int b = 20;
	 cout << (a==b) <<endl;
	 cout << (a!=b) <<endl; 
	system("pause");
	return 0;
}

1.5.4 逻辑运算符

作用:用于根据表达式的值返回真值或假值
运算符 术语 示例 结果
&& 逻辑与 a&&b 同真为真,其余为假
|| 逻辑或 a||b 一真为真,全假为假
逻辑非 !a a为假则!a为真;a为真则!a为假

1.5.4.1 逻辑与运算符

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	int a =10;
	int b =20;
	cout <<(a&&b)<<endl;
	system("pause");
	return 0;
}

1.5.4.2 逻辑或运算符

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	int a =10,b =20;
	cout<<(a||b)<<endl;
	a = 0;  b = 0;
	cout<<(a||b)<<endl;
	system("pause");
	return 0;
}

1.5.4.3 逻辑非运算符

代码及实现效果如下:

#include<iostream>
using namespace std;

int main()
{
	int a = 0;
	cout<<(!a)<<endl; 
    cout<<(!!a)<<endl;
	system("pause");
	return 0;
 }