C++教程 - How to C++系列专栏第3篇

关于专栏

这个专栏是优质的C++教程专栏,如果你还没看过第0篇,点击C++教程 - How to C++系列专栏第0篇去第0篇

本专栏一致使用操作系统:macOS Ventura,代码编辑器:CLion,C++编译器:Clang

感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^

博主反馈非常及时,如果你在阅读的时候遇到问题,可以直接在评论区提问,博主看到后会在24小时内给你反馈

C++教程 - How to C++系列专栏第3篇


目录

关于专栏

更新记录

2023年8月10日

前言

声明变量

为什么要声明变量

声明放在代码哪里?

赋值语句

=

-

cout

结语

快捷翻页

本文参考文章,书籍


更新记录

2023年8月10日

发布第一篇文章


前言

C++的语句是什么?变量为什么要声明?变量声明的代码放到程序的哪里比较好?赋值语句是什么?为什么选cout?printf不好吗?


C++程序是一组函数,函数是由语句构成的,C++有很多语句,那么下面我们先来看一段程序介绍他们

cout_3blog.cpp

cpp 复制代码
#include <iostream>

int main(void)
{
    using namespace std;

    int paper; // blog:定义变量

    paper = 20;  // blog:赋值运算符
    cout << "I have" ; // blog:空格
    cout << paper;
    cout << " Composition papers.";
    cout << endl;
    paper = paper - 2; // blog:运算
    cout << "Blog time!";
    cout << endl;
    cout << "Now I hava ";
    cout << paper;
    cout << " Composition papers. ";
    cout << endl;

    return 0;
}

声明变量

如果要把信息存储到计算机中,则必须要指出信息存放位置和所需的内存空间,C++中有一种简单的方法,就是声明,指出存储类型和位置标签,比如上面程序的第7行,我们把注释去掉就是这样:

cpp 复制代码
int paper;

int表示整型,编译器会分配其内存大小和详细信息,int是基础的数据类型,表示整数,即不含有小数部分,可以为正也可以为负,大小范围取决于C++的实现,之后我们会详细讲解这个部分

paper表示其在内存单元中的标签,它被称为变量,表示它是可以被不断更改的,paper就可以理解为它的代号或者标签,这个程序中可以使用paper来操作内存中的值

为什么要声明变量

有些语言(比如CPython)的变量就不需要声明,而C++为什么非要声明一下变量呢?

我们举个例子,比如程序员可能编写下面的Python语句

python 复制代码
hello_v1 = 123
...
...
...
hallo_v1 = hello_v1 + hello_v2
...
...
...
print(hello_v1)

我们可以发现hallo是拼写错误,,这种情况下运行并不能达到将变量hello_v1加上hello_v2后输出的结果,也很难在大型程序中的成千上万的支付中判断为什么出现了这种问题,而C++"声明后使用"在这时便起了作用,假如编译器发现hallo_v1没有声明过,则会直接报错,比如下面就是一个会导致编译器报错的例子:

clang_variables_declaration_error.cpp

cpp 复制代码
#include <iostream>

int main(void)
{
    using namespace std;
    cout << a;
    return 0;
}

clang报错如下:

bash 复制代码
clang_variables_declaration_error.cpp:6:13: error: use of undeclared identifier 'a'
    cout << a;
            ^
1 error generated.

翻译:

clang_variables_declaration_error.cpp:6:13:错误:使用未声明的标识符'a'

cout << a;

^

1 .产生错误。

声明放在代码哪里?

如果你熟悉C,你可能知道C语言的变量声明都要求在函数或过程的开头部分,但其实C++并没有这个要求,只要你放在使用的前面即可,当然这可能不能一目了然看出哪些函数使用了哪些变量


赋值语句

=

我们可以看到程序中有一段赋值语句:

cpp 复制代码
paper = 20;

=被称作赋值运算符

Microsoft Learn中的解释是:

将第二个操作数的值存储在由第一个操作数指定的对象中(简单赋值)

第二个操作数第一个操作数是什么东西?我们来看一段代码

cpp 复制代码
v = 1;

这其中v就是第一操作数,1就是第二操作数,理解了吧

C++中有一种很好玩的用法:

cpp 复制代码
int v1;
int v2;
int v3;
int v3;
v3 = v2 = v1 = 456

赋值运算从左到右进行,456首先被赋值给v1,然后给v2,最后给v3

-

其实除了=,-也是赋值运算符,在上面的程序中我们能看到这样的代码:

cpp 复制代码
paper = paper - 2;

其中paper被赋值了自己原先的值减二,是不是有点绕,我来解释一下

你有一个外号叫paper,真实的名字叫20,后面呢你改名了,把名字改少了2,然后把20-2的这个名字赋予了自己。


cout

我们看到上面的程序中这段代码:

cpp 复制代码
cout << paper;

并没有输出"paper"字符串,而是输出了它的值20,其实cout是把两个操作合并了起来,cout先把paper替换成了 20,然后转换输出字符

cout可以作用于字符串和数字,但大家不要忘记,整数20和字符串"20"有天壤之别,字符串是书写该数字是用到的字符2和5,而数字则是把20整体存储为字符,之后我们在将数据类型的时候会着重讲解

它和C的区别就在于cout的聪明程度,在C中要输出整数20和字符串"20"需要这么做:

cpp 复制代码
printf("String: %s\n", "20");
printf("integer: %d\n", "20");

不光复杂,还必须要用%s和%n来区分字符串和整数,假如你要求它输出字符串,但你输入了个整数,printf不够精密,发现不了错误,于是就会执行下去,输出一堆乱码


结语

作者会经常帮助有问题的小伙伴解决问题如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注

如果你们身边有像你提起过这个领域的,或者希望可以和ta一起进步的,把分享给ta吧

2657字,9个父项,5个子项


快捷翻页

第0篇

第1篇

第2篇


本文参考文章,书籍

参考文章

如果说Python中变量是标签(不是盒子),那这个变量名会占内存吗? - 知乎

赋值运算符 | Microsoft Learn

参考书籍

C++ Primer Plus

相关推荐
Theodore_10221 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
zy张起灵2 小时前
48v72v-100v转12v 10A大功率转换电源方案CSM3100SK
经验分享·嵌入式硬件·硬件工程
冰帝海岸2 小时前
01-spring security认证笔记
java·笔记·spring
‘’林花谢了春红‘’3 小时前
C++ list (链表)容器
c++·链表·list
----云烟----3 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024063 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
小二·3 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic4 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it4 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
武子康4 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud