[go: up one dir, main page]

C++学习(干货满满!)Day 1

先来看程序:

#include<iostream>
#include<string>

//通过关键字 constexpr,可让常量声明像函数
constexpr int b(){return 4/2;}
constexpr int a(){return 2*b();}
/*两者的区别是上者省了再一次的运算?*/
const int d=4/2;
const int c=2*d;

//在下面的示例中,枚举 RainbowColors 包含彩虹的各种颜色,可使用枚举来指定变量的类型,这样声明的变量只能取指定的值。
enum RainbowColors 
{ 
	Violet = 0, 
	Indigo, //顺序赋值,0,1,2,3,4......
	Blue, 
	Green, 
	Yellow, 
	Orange, 
	Red 
}e=Red;
RainbowColors MyFavoriteColor = Blue; // Initial value

typedef long long int ll;
//涉及语法烦琐的复杂类型,如使用模板的类型时,typedef(或类型替换)特别方便。

int main(){
	
	auto longLong=1000000000000;
	//使用 auto 时必须对变量进行初始化,因为编译器需要根据初始值来确定变量的类型。
	//如果将变量的类型声明为 auto,却不对其进行初始化,将出现编译错误。
	
	std::cout<<longLong<<std::endl;
	std::cout<<sizeof(longLong)<<std::endl;
	
	using std::endl;
	
	std::cout<<"Hello,World!"<<endl;
	
	using namespace std;
	
	const auto pi=22.0/7;
	//如果变量的值不应改变,就应将其声明为常量,这是一种良好的编程习惯。通过使用关键字 const,程序员可确保数据不变,避免应用程序无意间修改该常量。
	cout<<1.0*22/7<<endl<<pi<<endl;

//错误展示
//	const int b;
//	cin>>b;
	
	
	string name;
	cin>>name;
	cout<<name<<endl;
	//如果输入了我的完整姓名Siddhartha Rao,cin依然只会存储第一部分,即Siddhartha。要存储输入的整行内容,应使用函数getline().
	
	return 0;
}

 下面是今天的笔记:

 

 

/笔记
/*
  这里使用引号而不是尖括号来包含自己创建的头文件。尖括号(<>)通常用于包含标准
  头文件。
  
  根据约定,程序员在程序运行成功时返回 0,并在出现错误时返回1。
  
  在这个程序中,使用的是 std::cout 而不是 cout,原因在于 cout 位于标准(std)名称空间中。
  那么什么是名称空间呢?
  假设调用 cout 时没有使用名称空间限定符,且编译器知道 cout 存在于两个地方,编译器应调用哪
  个呢?当然,这会导致冲突,进而无法通过编译。这就是名称空间的用武之地。名称空间是给代码指
  定的名称,有助于降低命名冲突的风险。通过使用 std::cout,您命令编译器调用名称空间 std 中独一无
  二的 cout。
  很多程序员发现,使用 cout 和 std 名称空间中的其他功能时,在代码中添加 std 限定符很繁琐。为
  避免添加该限定符,可使用声明 using namespace
  
  问:#include的作用是什么?
  答:这是一个预处理器编译指令。预处理器在您调用编译器时运行。该指令使得预处理器将include 后面的<>中的文件读入程序,其效果如同将这个文件输入到源代码中的这个位置。
  
  问:什么情况下需要命令行参数?
  答:需要提供让用户能够修改程序行为的选项时。例如,Linux命令ls和Windows命令dir都显示当前目录(文件夹)的内容,要查看另一个目录中的文件,需要使用命令行参数指定相应的路径,如ls /或dir \。
  
  所有计算机、智能手机及其他可编程设备都包含微处理器和一定数量的临时存储空间,这种临时存储器被称为随机存取存储器(RAM)。另外,很多设备还让您能够将数据永久性地存储到硬盘等存储设备中。微处理器负责执行应用程序,在此过程中,它从RAM中获取要执行的应用程序二进制码以及相关联的数据,这包括显示到屏幕上的数据以及用户输入的数据。
  可以将RAM当作宿舍里成排存物柜的存储区域,每个存物柜都有编号,即地址。要访问特定的内存单元,如内存单元578,需要使用指令要求处理器从这里获取值或将值写入到这里。
  
  您可能注意到了,在函数名MultiplyNumbers()中,每个单词的首字母都大写,这被称为Pascal拼写法,而在变量名firstNumber、secondNumber和multiplicationResult中,第一个单词的首字母采用小写,这被称为骆驼拼写法。本书遵循这样的命名约定,即对于变量名,采用骆驼拼写法,而对于诸如函数名等其他元素,采用Pascal拼写法。
  您可能遇到这样的C++代码,即在变量名开头包含指出变量类型的字符。这种约定被称为匈牙利表示法,在Windows应用程序编程中很常见。对于变量名firstNumber,如果使用匈牙利表示法,将为iFirstNumber,其中前缀i表示整型。如果这个变量为全局整型变量,其名称将为g_iFirstNumber。几年来,匈牙利表示法不那么流行了,其中的原因之一是集成开发环境(IDE)得到了改进,能够在需要时(如被鼠标指向时)显示变量的类型。
  
  C++提供了一种专为存储布尔值 true 和 false 而创建的类型,其中 true 和 false 都是保留的 C++关键
  字。对于取值为 ON 或 OFF、有或没有、可用或不可用等设置和标记,非常适合使用这种类型的变量
  来存储。
  bool deleteFile = (userSelection == "yes");
  
  
  auto coinFlippedHeads = true; 
  这将指定变量 coinFlippedHeads 的类型的任务留给了编译器。编译器检查赋给变量的初值的性质,
  再确定将变量声明为什么类型最合适。就这里而言,显然初始值 true 最适合存储到类型为 bool 的变量
  中,因此编译器认为变量 coinFlippedHeads 的最佳类型为 bool,并在内部将 coinFlippedHeads 的类型视
  为 bool.
  
  字面常量可以是任何类型:布尔型、整型、字符串等。在您编写的第一个 C++程序(程序清单 1.1)
  中,您使用了如下语句来显示 Hello World:
  std::cout << "Hello World" << std::endl; 
  其中的 Hello World 就是一个字符串字面常量。您几乎一直在使用字面常量!当您像下面这样声明
  整型变量 someNumber 时:
  int someNumber = 10; 
  将这个整型变量的初始值设置成了 10。这个 10 是代码的一部分,被编译到应用程序中,是不可
  修改的,因此也是字面常量。您可能使用八进制字面值来初始化整型变量,如下所示:
  int someNumber = 012 // octal(八进制) 12 evaluates to decimal(十进制) 10 
  从 C++14 起,您还可使用二进制字面量,如下所示:
  int someNumber = 0b1010; // binary(二进制) 1010 evaluates to decimal 10
  
  #define 是一个预处理器宏,让预处理器将随后出现的所有 pi 都替换为 3.14286。预处理器将进行文本替换,而不是智能替换。编译器既不知道也不关心常量的类型。
  使用#define 定义常量的做法已被摒弃,因此不应采用这种做法。
  
  问:在 C++中,可以声明无符号整型变量,其取值只能是零或正整数。如果一个 unsigned int 变
  量的值为零,将其减 1 的结果如何?
  答:这将导致回绕。如果将值为零的 unsigned int 变量减 1,它将回绕到可存储的最大值!从表 3.1
  可知,unsigned short 变量的取值范围为 0~65535。为演示这一点,下面的代码声明了一个 unsigned short
  变量,将其初始化为 0,并减 1:
 */
 

还有几个残留的问题:

 Q:
  1.使用#define 定义的常量(已摒弃,不推荐)。?
  2.使用关键字 constexpr 声明的常量表达式(C++11 新增的)?
  3.使用关键字 enum 声明的枚举常量;?
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值