首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当sizeof(char)!= 1时,C中的字节精度指针算术

代码语言:txt
复制

当 sizeof(char) 不等于 1 时,C 中的字节精度指针算术

在 C 语言中,字节精度指针是指指向字节序列的指针,而不是指向字符的指针。因此,当 sizeof(char) 不等于 1 时,C 中的字节精度指针算术运算需要使用相应的字节数组长度进行操作。

字节精度指针算术运算需要注意字节数组长度的问题,因为不同类型的字节数组可能具有不同的长度。例如,整数型字节数组可能具有 4 个字节的长度,而浮点型字节数组可能具有 8 个字节的长度。因此,在进行字节精度指针算术运算时,需要根据不同类型的字节数组选择合适的算术运算符和运算方式。

以下是一些常用的字节精度指针算术运算符和运算方式:

  • 算术运算符: + 加法:+ + 减法:- + 乘法:* + 除法:/ + 取余:% + 加 1:++ + 减 1:--
  • 比较运算符: + 等于:== + 不等于:!= + 大于:> + 小于:< + 大于等于:>= + 小于等于:<=
  • 逻辑运算符: + 与:&& + 或:|| + 非:!

在 C 语言中,字节精度指针算术运算需要使用相应的指针运算符和运算方式,并且需要注意字节数组长度的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何深入掌握C语言操作符及表达式求值(详解)

有些表达式操作数在求值过程可能需要转换类型 隐式类型转换 ---- 概念 C整型算术运算总是至少以缺省整型类型精度来进行,为了获得这个精度 表达式字符和短整型操作数在使用之前被转换为普通整型...,然后再存储于a 整型提升 ---- 负数(有符号数) char c1 = -1; 变量c1二进制位(补码)只有8个比特位: 1111111 因为 char 为有符号 char 所以整形提升时候...,高位补充符号位,即为1 提升之后结果是: 11111111111111111111111111111111 正数(有符号数) char c2 = 1; 变量c2二进制位(补码)只有8个比特位:...("%u\n", sizeof(-c)); return 0; } 实例2c只要参与表达式运算,就会发生整形提升 表达式 +c ,就会发生提升,所以 sizeof(+c) 是4个字节; 表达式...-c 也会发生整形提升,所以 sizeof(-c) 是4个字节;对于sizeof(c) ,就是1个字节 算术转换 ---- 如果操作符各个操作数是不同类型,那么需要其中一个操作数转换为另一个操作数

59840
  • 操作符详解,超详细介绍操作符作用与功能和注意事项

    同样,有些表达式操作符在求值过程可能需要转换类型为其他类型。 12.1隐式类型转换 C整型算术总是至少以缺省整型类型精度来进行。...为了获得这个精度,表达式字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升 整型提升意义: 表示式整型要在CPU相应运算器执行,CPU内整型运算器(ALU)操作数字节长度一般就是...#include int main() { //负数整型提升 char c1 = -1; //变量c1二进制位(补码)只有8个比特位 //11111111 //因为char.../变量c2二进制位(补码)只有8个比特位 //00000001 //因为char为符合char //所以在整型提升时候,高位补充符合位,即为1 //提升后结果: //00000000...注意: 算术转换要合理,不然可能会有精度丢失等一些问题。 float f = 3.14; int num = f;//隐式转换,会有精度丢失 12.3操作符属性 复杂表达式求值有3个影响因素。

    6210

    CC++ 学习笔记四(指针、数组)

    如下例子,chP指向了一段长度为1字节变量a内存区域,其强制转换成int指针时,则超出了编译器分配内存区域,程序会异常退出。...char a = 'a'; char * chP = &a; int * iP = (int *)chP; *iP = 123; 指针变量算术运算 指针变量可以使用算术运算符实现自增减...p = 0x100 charPtr = 0x101 doublePtr = 0x108 即使指针变量算术运算为增减sizeof(数据类型)大小。...真正事实是,两者拥有不同存储结构,但引指针灵活性,两者可以相互引用、转换。 数组存储结构 与指针存储结构相比,数组在内存占据是连续字节单元。...那为什么指针可以访问数组中元素? 这是因为数组标识符表示是该数组第一个元素地址,指针指向数组标识符时,便可以通过指针访问数组各个元素。

    2.5K00

    编辑器对内存使用——数据保存与访问使用(整形篇)

    浮点数家族则完全不同(详细请阅读后续文章) 构造类型(自定义类): > 数组类型 > 结构体类型 struct > 枚举类型 enum > 联合类型 union 指针类型: int *pi; char...return un.c; } (4)整形提升 C整型算术运算总是至少以缺省整型类型精度来进行。...所程序输出结果是: c  //实例2 int main() { char c = 1; printf("%u\n", sizeof(c)); printf("%u\n", sizeof(+c))...; printf("%u\n", sizeof(-c)); return 0; } 实例2:,c只要参与表达式运算,就会发生整形提升,表达式 +c ,就会发生提升,所以 sizeof(+c)...表达式 -c 也会发生整形提升,所以 sizeof(-c) 是4个字节,但是 sizeof(c) ,就是1个字节. (5)算术转化 如果某个操作符各个操作数属于不同类型,那么除非其中一个操作数转换为另一个操作数

    40630

    void*到底是怎样存在?

    一个是指向整型指针,一个是指向char指针它们执行算术运算时,它们步长就是对应类型占用空间大小。...即 b + 1 //移动sizeof(int)字节 04 03 02 01 2019 字节0 字节1 字节2 字节3 字节4~7 ↑ 指针移动4个字节后,指向就是2019了,解引用自然得到2019...而对于c c + 1 //移动sizeof(char)字节指向如下: 04 03 02 01 2019 字节0 字节1 字节2 字节3 字节4~7 ↑ 解引用之后,自然得到3。...对于char指针c,解引用时,会解析1个字节算术运算时,也是以sizeof(char)为单位,所以c+1,移动一字节,解引用,处理1字节,得到03。...a+2,移动sizeof(char)字节,指向03,此时按照int类型指针解引用,由于int类型解引用会处理4字节内存,但是后面已经没有属于数组a合法内容了,因此可能出错。

    56210

    C语言符号意思(看了必懂系列)「建议收藏」

    (基本上就这三个作用) default:开关语句中“其他”分支 goto:无条件跳转语句 sizeof:计算数据类型长度 volatile:说明变量在程序执行可被隐含地改变 do :循环语句循环体...8.指针运算符 用于取内容(*)和取地址(&)二种运算。 9.求字节数运算符 用于计算数据类型所占字节数(sizeof)。 10.特殊运算符 有括号(),下标[],成员(→,.)等几种。...1.C数据类型 基本类型,构造类型,指针类型,空类型 2.基本类型分类及特点 类型说明符 字节 数值范围 字符型char 1 C字符集 基本整型int 2 -32768~32767 短整型...5.数据类型转换 ·自动转换 在不同类型数据混合运算,由系统自动实现转换, 由少字节类型向多字节类型转换。 不同类型量相互赋值时也由系统自动进行转换,把赋值号右边类型转换为左边类型。...f 以小数形式输出单、双精度实数 e 以指数形式输出单、双精度实数 g 以%f%e较短输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串 标志字符为-、+、#、空格四种,其意义下表所示

    2.5K20

    未禾C语言总结

    有些表达式操作数再求值时候可能要转换为其他类型。     12,隐式类型转换         C整型算术运算是以缺省(sheng)整形类型精度来进行。         ...为了达到这个缺省(sheng)整形类型精度,表达式字符和短整型操作数(2字节)在使用之前被转换为普通整型(int或unsigned int),这种转换称为整形提升。         ...指针大小:     指针在32位系统占4字节,在64位系统占8字节,与地址占内存大小有关。     ...而在同一系统地址由多个相同bit构成 变量(int,float,double,char等)占用内存字节,首个字节地址是该变量地址 初始化     声明指针时必须对其进行初始化(为0,NULL...传入指针时(类似按引用传递),主调函数 向被调函数传入了地址,可以改变主调函数相应变量值。

    50910

    C语言初阶】C语言操作符全攻略:提升编程效率关键步骤

    结构体.成员名 -> 结构体指针->成员名 代码示例 (C语言): struct Stu { char name[10]; int age; char sex[5]; double score;...同样,有些表达式操作数在求值过程可能需要转换为其他类型 隐式类型转换 C整型算术运算总是至少以缺省整型类型精度来进行。...为了获得这个精度,表达式字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升 整型提升意义: 表达式整型运算要在CPU相应运算器件内执行,CPU内整型运算器(ALU)操作数字节长度...CPU)是难以直接实现两个8比特字节直接相加运算(虽然机器指令 可能有这种字节相加指令)。...//负数整形提升 char c1 = -1; 变量c1二进制位(补码)只有8个比特位: 1111111 因为 char 为有符号 char 所以整形提升时候,高位补充符号位,即为1 提升之后结果是

    13610

    操作符详解(2)

    12.1 隐式类型转换 C整型算术运算总是至少以缺省整型类型精度来进行。 为了获得这个精度,表达式字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。...通用CPU(general-purpose CPU)是难以直接实现两个8比特字节直接相加运算(虽然机器指令 可能有这种字节相加指令)。...int //char 到底是signed char还是unsigned char是不确定C语言标准没有明确指定,是取决于编译器 //在当前使用VS上,char == signed char...a==0xb6 , b==0xb600 结果是假,但是c不发生整形提升,则表达式 c==0xb6000000 结果是真. 12.2 算术转换 如果某个操作符各个操作数属于不同类型,那么除非其中一个操作数转换为另一个操作数类型...取其长度,以字节 表示 sizeof rexp sizeof(类 型) rexp R-L 否 (类 型) 类型转换 (类型) rexp rexp R-L 否 * 乘法 rexp * rexp rexp

    15310

    操作符细节补充

    计算机存储整数方式是将数转化为二进制,存是数补码 比如-6(一个整型4个字节),它原码就是100000000000000000000110 -6反码就是111111111111111111111001...C语言中整型算术运算总是至少以缺省整型类型精度来进行 为了获得这个精度,表达式字符和短整型操作数在使用前被转换为普通整型,称为整型提升 注意几个点: 1 整型提升是按照数据变量符号位进行提升...整型提升后是4个字节位, 缺省整型类型即截断为8个比特位 比如3二进制位是011,那么在计算机是0000000000000000(截断)00000011, 同理,对127进行截断,是01111111...·示例2 int main() { char c = 1; printf("%u\n", sizeof(c)); printf("%u\n", sizeof(+c)); printf("%u\n...c));//布尔类型 return 0; } +c即对其进行了整型提升,因为+是算术操作符 !c因为是布尔类型所以结果也是1 感谢阅读!

    8310

    C】操作符详解

    算术操作符 + - * / % 下表显示了 C 语言支持所有算术运算符。...12.1 隐式类型转换 C整型算术运算总是至少以缺省整型类型精度来进行。 为了获得这个精度,表达式字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。...整形提升是按照变量数据类型符号位来提升 //负数整形提升 char c1 = -1; 变量c1二进制位(补码)只有8个比特位: 1111111 因为 char 为有符号 char...(+c)); printf("%u\n", sizeof(-c)); return 0; } 实例3,c只要参与表达式运算,就会发生整形提升,表达式 +c ,就会发生提升,所以 sizeof(+c)...是4个字 节.表达式 -c 也会发生整形提升,所以 sizeof(-c) 是4个字节,但是 sizeof© ,就是1个字节 12.2 算术转换 如果某个操作符各个操作数属于不同类型,那么除非其中一个操作数转换为另一个操作数类型

    22620

    抽丝剥茧C语言(阶)操作符+练习

    我们知道,数组传参传是首元素地址,那么函数sizeof就是首元素地址长度,不同数据类型地址长度在32位平台下是4个字节,64位平台下是8个字节。 6....同样,有些表达式操作数在求值过程可能需要转换为其他类型。 11.1 隐式类型转换 C整型算术运算总是至少以缺省整型类型精度来进行。...但是我们计算时候需要整型提升,关于整型提升是这样: 负数整形提升 char c1 = -1; 变量c1二进制位(补码)只有8个比特位: 1111111 因为 char 为有符号 char...,所以 sizeof(+c) 是4个字节。...表达式 -c 也会发生整形提升,所以 sizeof(-c) 是4个字节,但是 sizeof© ,就是1个字节

    58500

    C语言总集篇】操作符篇——从不会到会过程

    : 两个操作数时,就是算术加法和算术减法; 一个操作数时,就是正号和负号; 在多种含义操作符取地址与解引用是我们要介绍重点对象,因为我们在之后指针篇章学习,会经常遇到它们两个。...可以计算变量、指针变量、数组以及数据类型所占空间大小; sizeof计算变量、指针变量所占空间大小时,可以省略括号; sizeof在计算数组时,可以通过数组名来计算,也可以通过数组数据类型来计算,前者可以省略括号...3.2.3 小结 介绍到这里,我们来对sizeof用法做一个总结: sizeof可以计算变量、指针变量、数据类型、数组所占内存空间大小; sizeof操作对象为表达式时,表达式不参与运算; sizeof...C语言整型算术运算总是至少以缺省整型类型精度来进行。为了获得这个精度,表达式字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。...,如果这个存放变量字节长度不足整型长度,会发生截断; 对于char类型来说,它能存储整型值范围,而且我们在手算时可以按照下面的规则进行运算: 正整数之和小于等于127时,运算结果为两数相加值;

    33010

    C 语言基础 - 第一节

    C 类型可分为以下几种: 序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型。...整数类型 下表列出了关于标准整数类型存储大小和值范围细节: 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到 255...表达式 sizeof(type) 得到对象或类型存储字节大小。...您在 Linux 上编译并执行上面的程序时,它会产生下列结果: int 存储大小 : 4 浮点类型 下表列出了关于标准浮点类型存储大小、值范围和精度细节: 类型 存储大小 值范围 精度 float...您在 Linux 上编译并执行上面的程序时,它会产生下列结果: float 存储最大字节数 : 4 float 最小值: 1.175494E-38 float 最大值: 3.402823E+38 精度

    46420

    C++数据类型

    Union) 自定义数据结构:用struct或者class定义类 POD:Plain Old Data,用来表明C++中和C相兼容数据类型,在C++可以用is_pod::value判断是否是...实际开发我们仅使用C++内置整型int,如果程序需要大小不同整型,那么: 在合适情况下,推荐用size_t和ptrdiff_t 我们可以认为int至少32位,如果需要使用64位整数,那么使用...1 无符号字符型 unsigned char 1 单精度型 float 4 双精度浮点型 double 8 长双精度浮点型 long double 8 布尔型 bool 1 true, false...使用未经初始化指针是引发运行时错误一大原因,如果使用了未经初始化指针,那么指针所占空间的当前内容将被当成一个地址值,这个地址值指向内存空间中正好有内容时,就可能引发难以预料后果。...C++11我们可以用字面量nullptr初始化指针来得到空指针,它可以被转化成任意其他指针类型。

    94620

    c++基础之表达式

    c++要区分左值和右值,可以采取一个原则:一般来说一个对象被用作左值时,用是对象地址,也就是在内存位置,而右值可以采取排他性原则,只要不是左值都是右值。...运算符 sizeof 返回一个类型或者一个表达式所占字节数。...它满足右结合律 针对表达式,sizeof并不计算表达式值,只返回表达式结果类型大小 由于sizeof 不计算表达式值,因此即使在sizeof解引用指针也不会有什么影响 逗号表达式 逗号运算符含有两个表达式...而且会尽量往精度较大一方转化 调用函数时也可能会发生类型转化 算术类型转换 算术转换总是朝着精度更高一级转换 较小整型会被转化为int,较大整型会被转化为long、unsigned long、unsigned...longlong 等 其他隐式类型转换 除了算术类型隐式转换外,还有下面几种 数组转化为指针数组被用作 decltype、sizeof、取地址符一级typeid 等运算符运算对象时,该转换不会发生

    80610

    操作符(operator)

    同样,有些表达式操作数在求值过程可能需要转化为其他类型。 隐式类型转换 C整型算术运算总是至少以缺省(默认)整型类型精度来进行。...为了获得这个精度,表达式字符和短整型操作数在使用之前被转换为普通整型,这种转换称之为整型提升。...整形提升是按照变量数据类型符号位来提升 1.负数整形提升 char c1 = -1; 变量c1二进制位(补码)只有8个比特位: 1111111 因为 char 为有符号 char 所以整形提升时候...,表达式 +c ,就会发生提升,所以 sizeof(+c) 是4个字 节.表达式 -c 也会发生整形提升,所以 sizeof(-c) 是4个字节,但是 sizeof(c) ,就是1个字节 算术转换 如果某个操作符各个操作数属于不同类型...size_t类型 有符号数和无符号数进行比较会进行算术转换 有符号数提升为无符号数 是一个非常大正数 输出大于号 只要是表达式 有不同类型数据 最终一定会进行转换 类型大小小于整型进行整型提升

    50420

    c语言基础知识菜鸟_c语言入门基础100题

    union 声明共用体类型 void 声明函数无返回值或无参数,声明无类型指针 volatile 说明变量在程序执行可被隐含地改变 while 循环语句循环条件 3、数据类型: 在C语言中,数据类型指的是用于声明不同类型变量或函数一个广泛系统...C语言有4种数据类型: (1)基本类型: 算术类型(整数类型、浮点类型) (2)枚举类型: 算术类型(被用来定义在程序只能赋予其一定离散整数值变量) (3)void类型: (4)派生类型: 指针类型...(5)整数类型+浮点类型: 关于标准整数类型存储大小和值范围细节: 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到...(2)变量类型: char(一个字节,整数类型)、int、float(单精度浮点值)、double(双精度浮点值)、void(类型缺失) C语言中也允许定义各种其他类型变量,如枚举、指针、数组、结构、...有多个文件且定义了一个可以在其他文件中使用全局变量或函数时,可以在其他文件中使用extern来得到已定义变量或函数引用。 即extern是用来在另一个文件声明一个全局变量或函数。

    91920
    领券