样例如下: // 3、参数类型顺序不同 void f(int a, char b) { cout << "f(int a,char b)" << endl; } void f(char b, int...() { STTop(st1) = 3; } 该代码运行会报错: 必须为左值元素(可修改,赋值变量) 原因 当该返回值为int时,返回的临时变量STTop(st1)为常量,常量无法修改。...常量的延伸 (表达式1 + 表达式2)在赋值时也会产生临时对象 注意:临时对象具有常性!...但加上括号后,宏展开为 ((a)++) + b,这在大多数编译器中是不允许的,因为不允许对括号内的表达式进行递增操作,从而避免了这种错误。...⾯常量0,或者C中被定义为⽆类型指针(void*)的常量。
下面我讲叙述几种const的使用场景: 常量声明 const 关键字可以用于声明常量,语法为:const = 值;。...当为指针常量时,指针常量的值不可以修改,就是不能指向别的变量,但是可以通过指针修改它所指向的变量的值。 函数参数 在函数的参数列表中,使用 const 关键字可以声明不可修改的参数。...1.指向常量的函数指针:可以使用 const 修饰函数指针,使其指向的函数不能修改其所操作的数据。这种用法适用于指向不会修改数据的函数,以确保函数的调用不会导致数据被修改。...因此,可以使用指针指向字符串常量,但不能修改字符串的内容。 在 C++ 中,字符串常量被视为指向常量的指针(const char*),因此使用指针指向字符串常量时,不能修改字符串的内容。...在 C++ 中,推荐使用 const 关键字来声明全局常量,因为 const 具有类型安全性,而 #define 宏定义则可能导致类型不匹配和错误使用的问题。
int* p2 = p1; 权限的缩小 // 权限的缩小 int* p3 = &x; const int* p4 = p3; // 总结:权限可以缩小,不能放大 引用和临时变量 int main()...引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大小...没有类型安全的检查 。 C++有哪些技术替代宏? 1. 常量定义 换用const enum 2....} 3.4 auto不能推导的场景 1. auto不能作为函数的参数 // 此处代码编译失败,auto不能作为形参类型,因为编译器无法对a的实际类型进行推导 void TestAuto(auto a...((void *)0) #endif #endif 可以看到,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。
我们可以通过枚举成员表达式来判断,只要是枚举成员是表达式则为常量。...枚举成员表达式的判断条件如下:枚举表达式字面量(主要是字符串字面量或数字字面量)对之前定义的常量枚举成员的引用带括号的常量枚举表达式一元运算符 ++、 -- 常量枚举表达式是二元运算符 + 、-、*、/...常量demo如下:enum constantEnum{ num, //枚举表达式字面量 age = num, //引用常量枚举成员 count = 2 << 1, //枚举表达式字面量参与二元运算符...来缩小变量的类型,强制让ts编译器相信我们在做什么操作六、void(空类型)声明对象类型为void时返回为空值function func(): void { }声明一个变量为void 时只能将它赋值为...即使any类型也不可以赋值给never类型。返回类型为never的函数中,其终点必须是不可执行的,例如函数过程中抛出了错误或者存在死循环。
1.数组的概念 数组是⼀组相同类型元素的集合; • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 • 数组中存放的多个数据,类型是相同的。...数组的基本格式是 类型(type) 名称[大小(用数字表示)] 也就是这样:type arr_name[常量值] 类型就是像int char这样的类型指定,指定数组是指整形或是字符型等等 名称是自定义的一个名字...也就是这样: 4.数组的下标(以一维数组为例) C语⾔规定数组是有下标的,下标是从0开始的,也就是说当有a个元素的时候,最后一个元素的下标并不是a,而是a-1。...常量1可以看作x,常量值2可以看作y,[常量值1][常量值2]相当于数学中的(x,y)。这个特点在后续数组的打印中会更明显。...我们注意到,上面介绍数组的各个概念时,都是以一维数组为例,那么二维数组在这些概念上和一维有什么不同呢? 假设我们将二维数组就看作是坐标系,那么常量值1就相当于行,常量值2就相当于列。
1.2、变量的特点 必须要有大小 存储一定格式的可变数据 必须要有名字 1.3、变量的声明和赋值 数据类型 变量名 = 值 2、常量 2.1、常量的概述 常量是指在程序运行过程中其值不能改变的量。...表达式1:表达式2; 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2; 示例: 1获取两个数中大数。 int x=3,y=4,z; z = (x>y)?...根据java自动类型提升规则,同样道理 char 提升为int 。就把’a’代表的数字体现了出来。a 表示的是97 97+1就是98; 那么 想要查看98 表示的char 是什么 怎么实现呢 ?...还有一个概念字符’1’ 在ASCII中 不是数字 1,可以运行代码查看,到此就可以明白了char 类型,char类型也是可以参与运算的,为什么可以参与运算呢。...其作用域限定在循环语句块,其值与此时数组元素的值相等。 表达式: 表达式是要访问的数组名,或者是返回值为数组的方法。
四、数据类型 (不完全统计,后续会补上) [在这里插入图片描述] 1、基本类型 部分基本类型如下: 数据类型 含义 char 字符型,占用一个字节 int 整形,通常反应了所用机器中整数的最自然长度 float...六、条件语句 1、if语句 框架如下: if(表达式) { //这里放逻辑值为真,所执行的语句或程序块 } 根据这个基本的语句,可以进一步的拓展 if(表达式1) { //表达式1为真,执行的语句或程序块...a :b 2、switch语句 框架如下: switch (表达式) { case 常量表达式1: 语句或程序块1 case 常量表达式2: 语句或程序块...case 常量表达式n-1: 语句或程序块n-1 case 常量表达式n: 语句或程序块n default:语句或程序块n+1 // default为可选项,可以不写...,表达式1,表达式2,表达式3可以按照需要进行省略 (但是分号不能省!!!!)
1、像素操作 像素操作(Pixel Manipulation)通常用在各种图像处理算法之前,为算法的顺利执行做准备。...图像运算过程遵循以下规则: 1、两幅灰度图像进行运算时,图像中的像素逐―进行点对点运算。 2、一幅灰度图像与某一常量进行运算时,图像中的所有像素均与该常量进行该运算。...例如,类型为U8的灰度图像与类型为I16的灰度图像相加时,所得到的图像类型为I16;当某一灰度图像减去某一常量时,所得图像的类型仍为灰度图像;U8类型的灰度图像或常量与RGB32彩色图像进行运算时,得到的图像仍为...由于图像相加过程可能出现计算结果超出原图像的数据类型范围的情况,因此在循环开始前,先将保存计算结果的Average缓冲区中图像的类型由U8转换为I16,再在计算完成后转换为原类型。...IMAQ Multiply将I16类型的源图像与常量4相乘,将其灰度级放大4倍。 此后再由IMAQ Cast lmage将计算结果转换为U8类型并显示在图像控件中。 程序结束前释放所有分配的缓冲区。
一维数组的定义方式为: 类型说明符 数组名[常量表达式]; 例如int a[10]定义了一个整型数组,数组名为a,此数组有10个元素,10个元素都是整型变量。...引用数组元素的一般形式为数组名[下标],下标可以是整型常量或整型表达式。...初始化赋值 初始化赋值的一般形式为: 类型说明符 数组名[常量表达式] = {值, 值, …, 值}; 具体的实现方法有以下几种: (1)在定义数组时对数组元素赋以初值。...三、二维数组的定义和引用 1.二维数组的定义 二维数组定义的一般形式为: 类型说明符 数组名[常量表达式][常量表达式]; 例如:定义a为3X4 (3行4列)的数组,b为5X10(5行10列)的数组,如下...初始化数组的形式为: 数据类型 数组名[常量表达式1][常量表达式2] = {初始化数据}; 有4种方法对二维数组初始化: (1)直接分行给二维数组赋初值。
缺省参数的概念 缺省参数就是声明或定义函数时,为函数的参数指定一个缺省值,在调用函数时,如果没有实参则采用该形参的缺省值,如果有实参则采用实参 C语言不支持缺省参数 缺省值必须是常量或者全局变量 using...√)平移引用 //我们只能用const来修饰 return 0; } 把变量修饰成常量取消了他变化的能力,缩小了能力,在引用时,可以缩小引用,可以平移引用,但是不能放大引用 4、引用的使用 引用跟指针很像...(3)inline不能够声明与定义分离,会导致链接错误,因为编译器需要看到内联函数的定义才能内联展开 C++中的内联函数对标C中的宏,宏的优点是增强代码的复用性以及提高性能,缺点为不方便调试、代码可读性可维护性差...return 0; } 使用auto定义变量时必须对其进行初始化,在编译阶段根据初始化表达式来推到auto的实际类型,然后将其替换 2、auto的使用 (1)auto与指针和引用结合起来使用 用...,编译器只会对第一个类型进行推导,然后用推导出来的类型定义其他的类型 (3)auto不能推导的场景 auto不能作为函数的参数 auto不能直接用来声明数组 十、基于范围的for循环 1、范围for的基本概念
变量使用规则 变量必须先声明,并且初始化后才能使用; 声明变量必须有数据类型,不同的数据类型在内存中有不同的存储空间; 同一作用域内变量名不能重复定义,且Java对大小写敏感; 常量:程序中固定不变化的值...,布尔常量false,true等; 二、表达式 由数字、运算符、数字分组符号(括号)、常量、变量等能表达一个有意义的结果的排列组合;用运算符号连接的变量/常量可称为表达式。...默认情况下,一个浮点类型的字面量默认是double类型.若要声明一个常量为float型,则需在常量后加上f 或 F,double常量后面的D或d可省略。...,这样就比较好理解了;所以在使用中,要为数据选择合适的数据类型,发生避免溢出这样的错误。...当一个算术表达式中包含多个基本数据类型(boolean除外)的值时,整个算术表达式的数据类型将在数据运算时出现类型自动提升,其规则是:所有的byte、short、char类型被自动提升到int类型;整个表达式的最终结果类型被提升到表达式中类型最高的类型
(s3); char c1=1; char c2=1; char c3=c1+c2;//c3应为int类型 System.out.println(c3); 2....错误;运算结果从double转换为int可能会有精度损失,编译报错 double c = a + b;//当运算的两个数据的数据类型不一致时,接收结果的变量数据类型与大的范围的数据类型保持一致 2....三元运算符 当一个布尔表达式的结果( true 或者 false) 需要对应两种不同的结果时, 我们可以使用三元运算符. 表达式可: 由变量或常量和操作符组成的式子构成。...三元运算符格式: 数据类型 变量名 = 布尔类型表达式 ?真值 :假值; 1. 布尔类型表达式结果是true,三元运算符整体结果为真值,赋值给变量。 2....布尔类型表达式结果是false,三元运算符整体结果为假值,赋值给变量。
注释是必须要做的,除非你的代码自注释非常好 常量与变量 常量表示不能改变的数值。 Java中常量的分类: 1,整数常量。所有整数 2,小数常量。所有小数 3,布尔(boolean)型常量。...char 2个字节 boolean 1个字节 类型转换 自动类型转换/强制类型转换 表达式的数据类型自动提升 •所有的byte型、short型和char的值将被提升到int型。...表达式1:表达式2; 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2; 运算符的优先级(从高到低) 如果在程序中,要改变运算顺序,可以使用()。...语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略 建议永远不要省略 switch语句 格式: switch(表达式) { case 取值1: 执行语句; break;...default: 执行语句; break; } switch语句选择的类型:byte,short,int , char JDK5增加枚举 JDK7增加String case后面只能是常量,不能是变量
##if-#else 条件编译指令 第一种格式: 它的功能是,如常量表达式的值为真(非0),则将code1 编译到程序中,否则对code2编译到程序中。...注意: 是将代码编译进可执行程序, 而不是执行代码 条件编译后面的条件表达式中不能识别变量,它里面只能识别常量和宏定义 #if 常量表达式 ..code1......,而且还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取“别名”。...数组类型 typedef char NAME[20]; // 表示NAME是字符数组类型,数组长度为20。...(1)修饰一般常量一般常量是指简单类型的常量。
,权限可以平移(不变)、缩小但是不能扩大。...(我引用你,我的权限可以平移、缩小,但是不能扩大) 三、引用特性 1.引用在定义时必须初始化 int main() { int a = 10; int& b;//编译不通过 int&b = a;...三、引用的权限(含例子) 在指针和引用的赋值中,权限可以平移(不变)、缩小但是不能扩大。...,这属于权限的放大 const int& ra = a; // int& b = 10; // 该语句编译时会出错,因为10为常量,这属于权限的放大 const int& b = 10; double...因为在发生类型转换(无论是显示类型转换还是隐式类型转换或者整型提升等),过程中都会产生一个临时变量(类型变换不会影响原变量的类型),C++标准规定临时变量具有常性(常性就是不能改变的意思,常量就具有常性
1,为负数,其余各位取反然后加一得到0x20,最终的结果就是-32,而无符号,最后的值为4294967264 字面值常量 一般明确写出来数值内容的称之为字面值常量,从汇编的角度来看,能直接写入代码段中数值...,后续不能修改它的指向 引用本身不是对象,所以不能有指向引用的引用 可以多个引用指向同一个对象 int i = 0; int &j = i; int &value; //错误,引用必须初始化 int &...; //指向整型的常量指针 constexpr int *p = &i //错误 constexpr类型的指针无法指向具体的局部变量,但是它可以指向全局变量, 常量表达式的要求之一就是要在编译期就知道它的具体值...const char* str; //错误理解,这里并不是简单的替换 char* const str; //这个才是正确的理解,它修饰的是变量本身 auto auto 关键字能根据表达式返回的值类型,自动推断变量的类型...中,需要注意括号中变量与表达式的区别 decltype中如果是一个表达式,则类型是表达式计算结果的类型。
例如2.1E-3、5E8 例1:(2011-09-13)以下选项中关于C语言常量的叙述错误的是:(D) A.所谓常量,是指在程序运行过程中,其值不能被改变的量 B.常量分为整型常量、实型常量、字符常量和字符串常量...A项错误;八进制整常数的数码味0-7,B项错误;实型常量的指数形式E后必为整数,故C项错误;长整型数后缀为L或l,故D项正确。...,A项错误;实型常量的指数形式E后必为整数,故B项错误;’\007’是转义字符,只能用单引号括起来,不能用双引号或其他括号,故D项错误。...例1:(2009-09-22)有以下定义语句,编译时会出现编译错误的是(C) A)char a=’a’; B)char a=‘\n’; C)char a=‘aa’; D)char...例1:(2009-04-07)若变量x,y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(“ x/y=%d ”,x/y);补充完整,使其输出的计算结果形式为:x/y=11。
1是int类型,s会被提升为int类型 s+1后的结果是int类型,将结果在赋值会short类型时发生错误 short内存2个字节,int类型4个字节 必须将int强制转成short...; // 错误,因为 s+1 会转化为int类型,再赋值给short类型的s,则会出错。 ...+ 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。...结果1:结果2 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。 ...); System.out.println(b4); } 分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候, 已经确定了 1+2 的结果并没有超过byte类型的取值范围
; (4)nullptr_t类型对象不能用于算术运算表达式; (5)nullptr_t类型对象可以用于关系运算表达式,但仅能与nullptr_t类型或指针类型对象进行比较,当且仅当关系运算符为==、...常量表达式指值不会改变并且在编译时期就得到计算结果的表达式[4]^{[4]}[4],例如: const int i=3; //i是一个常变量 const int j=i+1; //j是一个常变量...pointer) 如果自定义类型对象为常量表达式,那么在定义自定义类型时,需要将constexpr作用于自定义类型的构造函数。...struct B1 final {}; struct D1 : B1 {}; //错误!不能从final类继承!...如果断言表达式的值为 false ,那么编译器会出现一个包含指定字符串的错误,同时编译失败。如果为 true 那么没有任何影响。
名称的第一个字符不能是数字。 区分大小写 不能将关键字用作名称 以两个下划线或下划线和大写字母开头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。...要知道系统中整数的最大长度,可以使用C++工具来检查类型的长度。 首先使用sizeof运算符返回类型或变量的长度,单位为字节。 climits中包含符号常量(预处理方式)来表示类型的限制。...也可以使用字面值常量来初始化。也可以直接使用表达式来初始化变量。...变量的初始化的问题,有助于防范类型转换错误。 1.5 无符号类型 优点:可以增大变量能够存储的最大值。 创建无符号类型的变量时,只需要使用unsigned来进行声明即可。...1.7 char类型:字符和小整数 char类型:专门存储字符(如字母和数字),也是另外一种整型。
领取专属 10元无门槛券
手把手带您无忧上云