sizeof与数组,短路操作

简介: sizeof与数组,短路操作

首先简单介绍下sizeof,他是用来计算某个数据或数据类型在内存中所占用的存储空间,以字节为单位进行计数。下面是简单的例子。
image.png
分析:因为a是整形变量,int型数据占4个字节。

     arr数组是整形数组,内有3个元素,所以占用3*4个字节。

     arr1数组是字符串,一个字符占一个字节,系统会在字符串后面自动补'\0',所以占用6个节。

image.png
如上图,有第一个例子可轻松看出40和10。但是为什么下面两个输出的结果是8,8呢。

分析:数组传参时,传的的地址,我们用的是指针类型的形参来接收,在test1中sizeof(arr)求的是指针类型所占的字节数大小,在调用test2时也是同样的道理。不管是什么类型的指针,比如char,int,他们所占的字节数大小都是4或者8。实际上,指针所占字节的大小跟操作系统有关,32位操作系统返回值是4,64位操作系统返回值是8。

短路操作

&&--左边操作数如果为假,右边无需计算

||--左边操作数如果为真,右边无需计算

例1:
image.png
分析:因为a初始值为0,a++时,a先使用后++,此时已经为假了,就不再进行后边的计算,因此i的值为0,b,c,d的值不变。

例2:
image.png
分析:a初始为0,此时为假,++后变为1,继续右边的计算,b先++为3,此时为真,不再进行后边的计算,d的值也不会改变。因为表达式为真,所以i的值为1。

这就叫短路操作。

目录
相关文章
|
7月前
|
C++
在C和C++中,指针的算术操作
在C和C++中,指针的算术操作
|
存储 C语言
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
|
C语言
C语言:使用函数完成整型数组的打印、元素逆置、初始化
思路: 总体思路: (一). 实现 函数init() -- 初始化数组为全0 (二). 实现 函数print() -- 打印数组的每个元素 (三). 实现 函数reverse() -- 函数完成数组元素的逆置 (四). 完成 主函数 的编写 -- 测试这三个函数
268 0
|
7月前
|
C语言 C++
C++ sizeof()运算符的参数为指针和数组的值为什么不同
C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,
73 5
|
7月前
|
安全
来自c++primer5的sizeof运算符
来自c++primer5的sizeof运算符
37 0
|
7月前
|
存储 C语言
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
70 0
|
C语言
详解sizeof、strlen、指针和数组等组合题
详解sizeof、strlen、指针和数组等组合题
|
存储 编译器 C语言
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数1
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数1
|
存储 C语言
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数2
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数2
|
存储 编译器 程序员
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数3
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数3