首页 > 编程语言 >C++基础 变量和基本类型

C++基础 变量和基本类型

时间:2024-04-24 23:45:22浏览次数:26  
标签:const 变量 符号 C++ char 类型 声明 定义

一个char类型的大小和一个机器字节一样。char在实现的时候会是unsigned char和 signed char当中的一种,这与机器有关。
wchar_t,char16_t ,char32_t为国际化提供支持,这几种字符的字面值需要加前缀。
C++标准规定数据的宽度:short<=int<=long<=long long.
当unsigned int和int进行运算的时候,后者会被提升为前者,因为无符号数没有负数,所以负数被提升为无符号数会变成一个非常大的正数。
无符号数的0-1之后会得到巨大的正数,因此应该避免使用无符号数作为for循环的迭代变量,容易出现死循环。
同时应该避免混用有符号数和无符号数。

自动发生的类型转换:
一个无符号数被赋值了一个超过表示范围的数时会自动进行取模操作。把有符号数赋值给无符号数实际上就是把有符号数的字节序列解读为无符号数,-1的补码解读为无符号数会得到巨大的正数。
如果给一个带符号数赋值的一个超过范围的,那行为是未定义的。

通过给字面值指定前缀后缀可以指定字面值的类型和进制。

变量的初始化: 变量要求先声明后使用。只能被定义一次,可以声明无数次,声明的时候一旦进行初始化那就变成了定义。使用extern声明,声明是文件作用域。

内层作用域定义与外层作用域同名变量,外层会被内层的屏蔽。

引用出现的绝大多数地方都代表着引用的对象,最典型的是赋值、求表达式、取地址。

C++的定义是由数据类型和声明符构成的,在使用,分开的定义语句中,这些变量的数据类型是相同的,但是声明符是不一样的,所以可以定义出不一样的变量。

关于指针的const,重点理解:const char*p="sfsdf"和char * const pa={'a','\0} 和const char * const pb="sfsf".属于数据类型的一部分的那个const是会影响赋值和数据访问的,
而属于声明符的const作为右值的时候与没有const是一样的。

const默认只对文件内有效,要多文件使用,定义和声明的时候都要加extern。

类型别名:一种使用typedef,另一种是使用using。使用类型别名进行复合类型定义时,不能直接替换成原类型来理解(虽然作用可能一样),这个需要注意。
auto 通过初始值推导类型,对于数据类型的const不会忽略,对于属于声明符号的const会忽略。
decltype关键字:引用只有在这里作为引用类型,可以推断出&符号,别的情况引用的使用都与所指对象一样。decltype((variable))的结果永远都是一个引用。decltype的类型推导比较严格。很多时候都可以理解为是直接找到这个变量定义的地方,把定义的那一堆直接抄下来。

标签:const,变量,符号,C++,char,类型,声明,定义
From: https://www.cnblogs.com/panzewen/p/18156623

相关文章

  • C++多态与虚拟:函数重载(Function Overloading)
    重载(Overloading):所谓重载是指不同的函数实体共用一个函数名称。例如以下代码所提到的CPoint之中,有两个memberfunctions的名称同为x():1classCPoint{23public:4floatx();5voidx(floatxval);67};  其两个memberfunctions实现代码如下:1f......
  • m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,
    1.算法仿真效果vivado2019.2仿真结果如下:   输出正弦,并改变幅度,频率等。   输出方波,并改变幅度,频率等。   输出锯齿波,并改变幅度,频率等。   输出三角波,并改变幅度,频率等。 2.算法涉及理论知识概要       DDS(DirectDigitalSynthesis......
  • 笔记/C++中的数组排序
    在C++中,std::sort函数是一个用于对容器(如数组、向量等)进行排序的通用算法。它定义在<algorithm>头文件中,并接受两个迭代器参数,分别指向要排序的范围的开始和结束位置。此外,std::sort还可以接受一个可选的比较函数或lambda表达式,用于自定义排序规则。以下是std::sort函数的基本用......
  • 基本数据类型
    1.变量命名规则C++命名规则:在名称中只能使用字母字符、数字和下划线(_)。名称的第一个字符不能是数字。区分大写字符与小写字符。不能将C++关键字用作名称。如果想用两个或更多的单词组成一个名称,通常的做法是用下划线字符将单词分开,如my_onions;或者从第二个单词......
  • php变量引用
    可以看到b原本的值是123,引用a之后,变成100但是修改b的值为1100之后,发现a的值也从原本的100变成1100了这就涉及到引用的基本工作原理:当你使用引用时,实际上是在操作同一个变量的不同别名,因此对一个引用的修改会影响到所有指向该变量的引用 应用场景:如果某个我们想要控制的......
  • C++ 多态与虚拟:Class 语法语义
    1.object与class:在object-orientedprogramming编程领域,对象(object)有更严格的定义。对象是由数据结构和用于处理该结构的过程(称为methods)组成的实体(instance)。这些方法由对象接收的消息激活。一个对象的内部数据结构与其他对象完全隔离(此属性称为“encapsulation”)。对象是基于模......
  • C++ 对象
    概述C++的招牌能力之一,也是C++的核心特性没有之一,也是在C基础扩展的最重要的能力,一切皆可封装为对象,有三大主要特性,封装、多态、继承。基础简单理解,类就是用户自定义的一种数据结构,封装了数据和行为(函数)的组合。类中的数据称为成员变量,函数称为成员函数。类可以被看作是一种......
  • C# winform程序中 使用全局公有变量
    在winform项目中用于存用户名,权限的全局公有变量。如果采用登陆后在主窗体存储,每一次实例子窗体时,再传参过去。这种方法也行,就是有点太麻烦了。我采用的是 存储在 Program.cs文件中定义 全局公有变量方案。也有缺点但相对方便些。Program.cs文件usingSystem......
  • 使用VS Code和WSL开发C/C++的简单配置
    使用VSCode和WSL开发C/C++的简单配置目录使用VSCode和WSL开发C/C++的简单配置使用情形VSCodeDebug简要介绍由于微软文档写的非常详细,感觉没什么写的必要了,后续只贴参数和链接了task配置launch配置C/C++配置参考来源使用情形TheWindowsSubsystemforLinux适用于Linux的W......
  • String.valueOf和强制类型转换(String)的区别
    String.valueOf和强制类型转换(String)在Java中都可以用来将其他类型的数据转换为字符串,但它们之间有一些重要的区别。空值处理:String.valueOf:当处理的对象为null时,String.valueOf会返回字符串"null",而不会抛出异常。(String):强制类型转换在面对null值时,会抛出NullPointerExc......