首页 > 其他分享 >C语言中的整数类型及其类型转换

C语言中的整数类型及其类型转换

时间:2024-07-16 20:41:41浏览次数:15  
标签:类型转换 转换 符号 int 整数 C语言 整型

C语言中的整数数据类型

C 语言中的整型数据就是定点整数,根据位数的不同,可分为字符型 (char,8 位)、短整型(short 或 short int,16 位)、整型 (int,32 位)、长整型 (long 或 long int,在32 位机器中为 32位,在 64 位机器中为 64 位)。char 是整型数据中比较特殊的一种,其他如 short/int/long 等不指定signed/unsigned 时都默认是有符号整数,但 char 默认是无符号整数。无符号整数 (unsigned short/int/long)的全部二进制位均为数值位,没有符号位,相当于数的绝对值。signed/unsigned 整型数据都是按补码形式存储的,只是 signed 型的最高位代表符号位,而在unsigned 型中表示数值位,因此这两者所表示的数据范围也有所不同。

有符号数与无符号数的转换

等长的强制类型转换的结果是保持位值不变,只是改变了解释这些位的方式。
有符号数转换为等长的无符号数时,符号位解释为数值的一部分,负数转换为无符号数时数值将发生变化。同理,无符号数转换为有符号数时最高位解释为符号位,也可能发生数值的变化

若同时有无符号数和有符号数参与运算,C语言标准规定按照无符号数进行运算

img

不同字长整数之间的转换

当大字长变量向小字长变量强制类型转换时,系统把多余的高位部分直接截断,低位部分直接赋值。
由本例可知,小字长到大字长的转换时,不仅要使相应的位值相等,还要对高位部分进行扩展。若原数字是无符号整数,则进行零扩展,扩展后的高位部分用 0 填充。否则进行符号扩展,扩展后的高位部分用原数字符号位填充。其实两种方式扩展的高位部分都可理解为原数字的符号位。小字长向大字长的转换,在位值相等的条件下还要补充高位的符号位,可以理解为数值的相等。注意,char 型为8位无符号整数,其在转换为 int 型时高位补0即可

标签:类型转换,转换,符号,int,整数,C语言,整型
From: https://www.cnblogs.com/AH20/p/18306069

相关文章

  • 【C语言习题】39.模拟实现atoi
    文章目录作业标题作业内容代码作业标题模拟实现atoi作业内容自行了解库函数atoi的功能,学习使用,并模拟实现atoi函数。文档链接:atoi-C++Reference(cplusplus.com)代码//atoi将一个字符串转化为一个整型#include<stdio.h>#include<assert.h>#include<......
  • 【C语言习题】40.变种水仙花数
    文章目录题目代码题目代码#include<stdio.h>intmain(){inti,j;for(i=10000;i<99999;i++){intsum=0;for(j=10;j<=10000;j=10*j){sum+=(i/j)*(i%j);}if(sum==i)prin......
  • 【c语言】函数递归的一些例题1.编写一个函数,不许创建临时变量,求字符串长度 2.求n的阶
    1.intmy_strlen(char*str){   if(*str!='\0')   {      return1+my_strlen(str+1);//利用递归求字符串长度:递归一次就是多一个字符这样就可以求出字符串的长度了   }   else      return0;}intmain(){   //编写......
  • C语言中的指针:掌握内存的钥匙
    C语言中的指针:掌握内存的钥匙引言       C语言是一种结构化编程语言,它提供了对硬件底层的直接访问,其中最强大的特性之一就是指针。指针允许程序员直接操作内存地址,这对于理解程序的内部工作原理以及优化代码性能至关重要。本文将深入探讨C语言中指针的概念、使用方......
  • C语言指针详解(初级)
    1.指针是什么?指针理解的2个要点:        1.指针是内存中一个最小单元的编号,也就是地址(&)        2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量总结:指针就是地址,口语中说的指针通常指的是指针变量。那我......
  • C语言网络编程(一对多通讯)
    使用C语言实现一个服务器对多个客户端主要技术除了网络编程几个函数的使用外,还用到了线程,实现方式是一个客户端对应一个新的线程Server:#include<pthread.h>//包含线程库的头文件#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h......
  • 你不知道的JavaScript---强制类型转换
    你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧!JavaScript是一种动态类型语言,这意味着变量可以在不同类型之间自由转换。在开发......
  • java mapstruct 同字段LocalDateTime和LocalDate不同类型转换处理
    解决方式:在接口中定义方法传入参数、返回参数为对一个的类型,mapstruct的实现类会自动调用该方法。代码:@Mapper(builder=@Builder(disableBuilder=true))publicinterfaceStlmtCheckingResultConvert{StlmtCheckingResultConvertINSTANCE=Mappers.getMapper(Stl......
  • 嵌入式C语言指针面试题大全(持续更新)
    什么是指针?指针在C语言中的作用是什么?在C语言中,指针是一种变量类型,它存储的是其他变量或数据结构的内存地址,而不是实际的数据值。指针允许程序员直接操作和管理内存,这是C语言的一个重要特性,也是它能够高效地处理资源和进行底层编程的原因之一。指针在C语言中有多种作用,包括......
  • goframe之gconv支持类型转换
    GoFrame的 gconv  模块是一个功能强大的类型转换工具,它能够将任何类型的变量转换成其他指定的类型。以下是 gconv  模块的一些常用用法:1. 基本类型转换: gconv  提供了多种基本数据类型之间的转换功能,例如 Int , Uint , Float32 , Float64 , Bool ......