std::cout << "Count is " << count << std::endl;
在前面的学习中我们看到的输出没有 std::,而这一节出现了上面的代码。
std 是标准库函数使用的命名空间,是 standard(标准)的缩写。
using namespace std ,它声明了命名空间 std,后续如果有未指定命名空间的符号,那么默认使用 std,这样就可以使用 cin、cout、vector 等。
假设你不使用预处理 using namespace std;,就要加上 std::cin 或者 std::cout。
cin 用于从控制台获取用户输入,cout 用于将数据输出到控制台。
cin 是输入流对象,cout 是输出流对象,它们分别可以用 >> 和 <<,是因为分别在其类中对相应运算符进行了重载。
验证 const
#include<iostream> using namespace std; int main() { const float PI = 3.14; PI = 3; //尝试修改 PI 的值,将会出现错误提示。 float radius = 10.0; float area = PI * radius * radius; float circumference = 2 * PI * radius; cout << "area is "<<area <<", circumference is "<< circumference<<endl; return 0; }
更多 C++ const 关键字参考:C++ const 关键字小结
16 位整数(短整数)的情况下,十进制 50000 就是二进制 11000011 01010000 但在有符号的情况下,二进制最左边的 1,代表这整个数字是负数但是电脑是以补码形式来表示数字的,要获得原本的数字,首先要把整个二进制数 - 11100001101010000 - 1 = 1100001101001111 然后,在把答案取反码 not 1100001101001111 = 0011110010110000 把最终答案变成十进制,就是 15536 所以,一开始的二进制数 11000011 01010000,在有符号的情况下代表的就是 -15536。
来自网友牢记圣光的笔记:
//上边的例子的二进制数为下边的运行结果,看到二进制就很好理解了! #include <iostream> #include <cstdlib> using namespace std; int main() { short int i; // 有符号短整数 short unsigned int j; // 无符号短整数 j = 50000; i = j; cout <<"i:" <<i<<'\n'<< "j:" << j<<endl; char s[40]; _itoa_s(i, s, 2); printf("变量i的二进制数为:%s\n", s); _itoa_s(j, s, 2); printf("变量j的二进制数为:%s\n", s); return 0; }
结果为:
i:-15536 j:50000 变量i的二进制数为:11111111111111111100001101010000 变量j的二进制数为:1100001101010000
对于无符号化为有符号的位数运算,采取 N-2^n 的计算方法,n 取决于定义的数据类型 int、short、char、long int 等等,N 为无符号数的数值,例如文中的 N=5000,short 为 16 位,计算方法为 5000-2^16 得到 -15536。
volatile 往往会用于多线程的修饰,比如:
volatile boolean isNext = false; Thread A() { // 第一个工作 // isNext = true; } Thread B (){ if (isNext) { // 第二个工作 } }
这里volatile 就是从来标记isNext, 以确保线程B每次都重新从内存中读取isNext的值,第二个工作一定在第一个工作之后进行。
但是要注意,这里无法保证顺序性,应该编译器编译的时候会重新打乱两个语句的先后顺序,因此做第一个工作和赋值给isNext不一定会按照你代码顺序正常执行。
更多内容可参考:C/C++ 中 volatile 关键字详解
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1859C++ 存储类
在前面的学习中我们看到的输出没有 std::,而这一节出现了上面的代码。
std 是标准库函数使用的命名空间,是 standard(标准)的缩写。
using namespace std ,它声明了命名空间 std,后续如果有未指定命名空间的符号,那么默认使用 std,这样就可以使用 cin、cout、vector 等。
假设你不使用预处理 using namespace std;,就要加上 std::cin 或者 std::cout。
cin 用于从控制台获取用户输入,cout 用于将数据输出到控制台。
cin 是输入流对象,cout 是输出流对象,它们分别可以用 >> 和 <<,是因为分别在其类中对相应运算符进行了重载。
1858C++ 修饰符类型
验证 const
1857C++ 修饰符类型
16 位整数(短整数)的情况下,十进制 50000 就是二进制 11000011 01010000 但在有符号的情况下,二进制最左边的 1,代表这整个数字是负数但是电脑是以补码形式来表示数字的,要获得原本的数字,首先要把整个二进制数 - 11100001101010000 - 1 = 1100001101001111 然后,在把答案取反码 not 1100001101001111 = 0011110010110000 把最终答案变成十进制,就是 15536 所以,一开始的二进制数 11000011 01010000,在有符号的情况下代表的就是 -15536。
来自网友牢记圣光的笔记:
结果为:
1856C++ 修饰符类型
对于无符号化为有符号的位数运算,采取 N-2^n 的计算方法,n 取决于定义的数据类型 int、short、char、long int 等等,N 为无符号数的数值,例如文中的 N=5000,short 为 16 位,计算方法为 5000-2^16 得到 -15536。
1855C++ 修饰符类型
volatile 往往会用于多线程的修饰,比如:
这里volatile 就是从来标记isNext, 以确保线程B每次都重新从内存中读取isNext的值,第二个工作一定在第一个工作之后进行。
但是要注意,这里无法保证顺序性,应该编译器编译的时候会重新打乱两个语句的先后顺序,因此做第一个工作和赋值给isNext不一定会按照你代码顺序正常执行。