当某个变量被初始化了,但是没有被使用的时候,会又警告出现。

如果我们想要解决这些警告:C++17 引入了该[[maybe_unused]]属性,它允许我们告诉编译器我们可以接受未使用的变量

1
2
3
4
5
6
7
8
9
10
int main()
{
[[maybe_unused]] double pi { 3.14159 };
[[maybe_unused]] double gravity { 9.8 };
[[maybe_unused]] double phi { 1.61803 };

// the above variables will not generate unused variable warnings

return 0;
}

错误示范:

1
2
3
4
5
6
7
8
#include<iostream>
int main()
{
double PI{ 3.1415926 };
return 0;
}
//严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息
//警告 C4189 “PI”: 局部变量已初始化但不引用 HelloWord //D:\learncpp\HelloWord\HelloWord\HelloWord.cpp 8

std::endl 与 ‘\n’

std::endl:将光标移动到控制台的下一行,并刷新缓冲区

'\n' 字符将光标移动到控制台的下一行,但不请求刷新

1
2
3
4
5
6
7
8
9
#include <iostream> // for std::cout

int main()
{
int x{ 5 };
std::cout << "x is equal to: " << x << '\n'; // Using '\n' standalone
std::cout << "And that's all, folks!\n"; // Using '\n' embedded into a double-quoted piece of text (note: no single quotes when used this way)
return 0;
}
1
2
x 等于:5
伙计们,这就是全部!

std::cin

1
2
3
4
5
6
7
8
9
#include<iostream>
int main()
{
std::cout << "Enter a number: ";
int x{};
std::cin >> x;
std::cout << "You entered " << x << '\n';
return 0;
}
1
2
3
4
5
6
7
输入     x的值
a => 0
3.2或者3.7 => 3
-2 => -2
Hello => 0
aba123 => 0
123adf => 123

未定义错误

1
2
3
4
5
6
7
#include <iostream>
int main()
{
int x;
std::cout<<x;
//报错,因为它将问题视为错误
}
1
2
3
4
5
6
7
#include <iostream>
int main()
{
int x{}
std::cout<<x;
//打印0
}

未定义行为(Undefined Behavior,UB)

如果在不同的编译器上编译,我们的程序可能无法按预期工作(如果我们更改影响实现行为的项目设置,甚至在同一编译器上!