首页 > 其他分享 >整数的类型(4)整数的格式化及整数类型选择

整数的类型(4)整数的格式化及整数类型选择

时间:2023-11-12 17:56:49浏览次数:28  
标签:输出 格式化 进制 十六进制 int 整数 long 类型

<1>整数的输入和输出

(1)只有两种形式int 或 long long

  • %d:int;
  • %u:unsigned;
  • %ld:long long;
  • %lu:unsigned long long;

举例:通过一段代码输出整数为unsigned的结果

#include<stdio.h>

int main(){
int i=-1;
char c=-1;
printf("i=%u,c=%u",i,c);
return 0;
}
输出结果为i=4294967295,c=4294967295.两个数均为unsigned的int所能表达的最大值;

注意:1.char和int得出结果相同,是因为我们把所有小于int的变量传入printf的时候,我们的编译器会将其转换为int传进去;

2.这与其在计算机内部存在的方式没有关系,仅取决于是否以正确的方式格式化输出;

<2>8进制与16进制

一个以0开始的数字字面量为8进制;

一个以0x开始的数字字面量为16进制;

举例:输入一段代码

#include<stdio.h>

int main(){
int i=012;(以0开始,为8进制)
char c=0x12;(以0x开始,为16进制)
printf("i=%d,c=%d",i,c);注意:这里输出为%d表示输出结果为十进制
return 0;
}
输出结果是i=10,c=18;

注意:我们所见的进制表示方式并不是计算机内部的进制表达方式,计算机内部永远都是二进制,一切都依靠编译器进行转换;

%d输出的整数类型为十进制;%o:输出八进制;%x输出十六进制;

以一段代码举例:

1)#include<stdio.h>

int main(){
int i=012;
char c=0x12;
printf("i=%o,c=%x",i,c);
return 0;
}得出结果为i=12,c=12;
2)涉及到字母大小写的问题:

#include<stdio.h>

int main(){
int i=012;
char c=0x12A;
printf("i=%o,c=%x",i,c);——在此处%x中x为小写,输出c的结果中A便为小写;若%X中X为大写,输出c的结果中A便为大写
return 0;

注意:1.八进制与十六进制只是如何把数字表达成字符串,与内部如何表达数字无关;

2.同时八进制与十六进制不仅能在输出printf中使用,在scanf输入中一样可以使用,意味将输入数据当作八进制或者十六进制读入;

(2)补充:

二进制与十六进制的关系:由2^4=16可知四位二进制正好是一个十六进制位;

举例:

  • 0001-四个二进制位-(一个十六进制位,表达1)同理:0010(一个十六进制位,表达2),而十六进制的两位(如1 2)可以表达一个char;
  • 同理八进制的一位数字刚好可以表达三位二进制;

<3>整数类型的选择

整数类型多样是因为早期的语言需要准确表达计算机里的数据(内存,寄存器,接口16bit)

————实际应用并不需要细致区分:

1.无特殊需要,就选择int;
2.unsigned与否只是输出不同,内部计算是一样的

标签:输出,格式化,进制,十六进制,int,整数,long,类型
From: https://www.cnblogs.com/QingYuY/p/17827485.html

相关文章

  • 数据类型BigDecimal数值的显示问题
    DECIMAL从MySQL5.1引入,在mysql中,金额用“DECIMAL”类型。DECIMAL类型是专门为财务相关问题而设计的数据类型,能够解决数据的范围和精度的问题,常用于货币数据,如价格,工资,帐户余额等;它实际上是以字符串的形式存放的,可在定义时划定整数部分以及小数部分的位数,语法“DECIMAL(M,D)”,参数M......
  • 无涯教程-Dart - 数据类型
    编程语言的最基本特征之一是它支持的数据类型集。Dart语言支持以下类型-number  数字类型Strings   字符串类型Booleans布尔类型Lists     列表类型Maps    映射类型number数字类型Dart中的数字用于表示数字。Integer   - 整数值表......
  • 反转一个整数
    #include<stdio.h>intreverse_number(intnum){intreversed=0;while(num!=0){intremainder=num%10;reversed=reversed*10+remainder;num/=10;}returnreversed;}intmain(){intnum=12345;intreversed_num......
  • 四、基本数据类型和计算(三)
    四、基本数据类型和计算(三)1、枚举变量1)通过案例体现枚举类型的作用​ 假设要为我们的游戏装备设置稀有度属性,应该如何设计装备级别变量名普通normal高级high稀有rare史诗epic传说legend神话myth不使用枚举变量,使用常量方式设置#include......
  • 整数类型(3)
    <1>数的范围(1)整体范围:对于一个字节(8bit)可以表达的数的范围为00000000——11111111;(2)在数的范围中00000000——>0;00000001~01111111——>1~127,高位为0,在纯二进制中表示1~127;10000000~11111111——>-1~-128,高位为1,在补码表示-1~-128;计算机中所存在的一切数据都用纯二......
  • 13. 罗马数字转整数
    目录题目法一、最笨的办法法二、找到一点规律的解法题目罗马数字包含以下七种字符:I(1),V(5),X(10),L(50),C(100),D(500)和M(1000)例如,罗马数字2写做 II ,即为两个并列的1。12写做 XII ,即为 X + II 。27写做  XXVII,即为 XX + V + II 。通常情况下,罗马数字中小的......
  • C++ 的cout格式化输出
    在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留2位小数,再比如以十六进制的形式输出整数,等等。对于学过C语言的读者应该知道,当使用printf()函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如%.2f表示输出浮点......
  • 输入三个整数让其从大到小排列
    ......
  • 类型转换
     ......
  • 当使用“===”进行比较时,需要严格区分数据类型
    执行以下程序,输出结果为()letflag1=null||undefined;letflag2=null&&undefined;if(flag1===true)console.log('flag1');if(flag2===false)console.log('flag2');Aflag1Bflag2Cflag1、flag2D什么都不会输出正确答案:D官方解析:不管是a||b还是......