热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++unsignedint*转int*_认识int和unsignedint的区别

今天我在逛网页的时候,看见了下面的一行代码:unsignednumber7;什么是unsignedint?当时我有被疑惑到,

    今天我在逛网页的时候,看见了下面的一行代码:


unsigned number = 7;


  • 什么是 unsigned int ?

当时我有被疑惑到,在我的印象里,定义数字变量时只有三种类型。于是便去百科了一下,了解到 unsigned 其实和 int 有联系的: int 整型可以划分为带符号的(signed)和无符号的(unsigned)两种,带符号类型可以表示正数、负数或0,无符号类型则仅能表示大于等于0的值。在默认情况下声明的整型变量都是有符号的类型,如果需声明无符号类型的话就需要在类型前加上unsigned关键字。(int 整型是计算机编程语言中的一种基本数据类型,通常反映了所用机器中整数的最自然长度。)
  • 怎么控制输出无符号整型(unsigned int)变量 ?

我们用代码演示一下:

#include "stdio.h"int main(){ unsigned int num_one = 5;    // 也可以 unsigned num_one = 5; 这样定义 int num_two = -7; /* * %u 控制输出 十进制无符号整数 * %d 控制输出 十进制有符号整数 */ printf("这是输出无符号的结果 %u\n",num_one + num_two); printf("这是输出有符号的结果 %d\n",num_one + num_two); return 0;}

    运行结果如下:

这是输出无符号的结果  4294967294这是输出有符号的结果  -2

  • 为什么两个结果不一样 ?

     分析上面的代码,可有发现, num_one + number_two 的值为 -2;因为

printf("这是输出无符号的结果 %u\n",num_one &#43; num_two);输出的是无符号十进制整数。由于-2<0,所以输出了如上结果。我们将上面的代码修改为如下代码&#xff0c;看看结果&#xff1a;

#include "stdio.h"int main(){ unsigned int num_one &#61; 5;    // 也可以 unsigned num_one &#61; 5&#xff1b; 这样定义 int num_two &#61; -7; /* * %u 控制输出 十进制无符号整数 * %d 控制输出 十进制有符号整数 */ printf("这是输出无符号的结果 %u\n",num_one - num_two); printf("这是输出有符号的结果 %d\n",num_one - num_two); return 0;}结果如下&#xff1a;

这是输出无符号的结果 12这是输出有符号的结果 12分析代码&#xff1a;发现 num_one - number_two 的值为 12&#xff1b;因为12>0,所以两个结果相同。

  • 补充福利&#xff1a;

C语言中输入输出所有格式控制符

参考CSDN创作者Shy_tom

  1. 类型控制符type

 type的字符用于规定输出数据的类型&#xff0c;含义如下&#xff1a;

字符对应数据类型含义
d / iint接受整数值并将它表示为有符号的十进制整数&#xff0c;i是老式写法
ounsigned int无符号8进制整数(不输出前缀0)
uunsigned int无符号10进制整数
x / Xunsigned int无符号16进制整数&#xff0c;x对应的是abcdef&#xff0c;X对应的是ABCDEF(不输出前缀0x)
f(lf)double单精度浮点数和双精度浮点数用f(lf 在C99开始加入标准&#xff0c;意思和 f 相同)
e / Edouble科学计数法表示的数&#xff0c;基数为10&#xff0c;此处"e"的大小写代表在输出时用的"e"的大小写
a / Adouble16进制科学计数法表示的数&#xff0c;基数为2,以p表示,以16进制输出&#xff0c;此处"a"的大小写代表在输出时用的"p"的大小写
g / Gdouble有效位数&#xff0c;如&#xff1a;%.8g表示单精度浮点数保留8位有效数字
cchar字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
s / Schar * / wchar_t *字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0’结尾&#xff0c;这个’\0’即空字符)
pvoid *以16进制形式输出指针
nint *到此字符之前为止&#xff0c;一共输出的字符个数&#xff0c;不输出文本
%无输入不进行转换&#xff0c;输出字符‘%’(百分号)本身
m打印errno值对应的出错内容,(例: printf("%m\n"); )

注&#xff1a;%g、%G在小数点位数四位或指数大于等于精度时用%e、%E&#xff0c;否则用%f。

    2.标志flags

 flags规定输出样式&#xff0c;取值和含义如下&#xff1a;

字符字符名称说明
-减号左对齐&#xff0c;右边填充空格(默认右对齐)
&#43;加号在数字前增加符号 &#43; 或 -
0数字零将输出的前面补上0&#xff0c;直到占满指定列宽为止(不可以搭配使用"-")
空格输出值为正时加上空格&#xff0c;为负时加上负号
#井号type是o、x、X时&#xff0c;增加前缀0、0x、0X;type是e、E、f、g、G时&#xff0c;一定使用小数点;type是g、G时&#xff0c;尾部的0保留

    3.输出最小宽度width

用于控制显示数值的宽度&#xff0c;取值和含义如下&#xff1a;n(n&#61;1,2,3,4,5,6…)&#xff1a; 宽度至少为n位&#xff0c;不够以空格填充。&esmp;* 格式列表中&#xff0c;下一个参数还是widthwidth是一个可选的指定最小值字段宽度的十进制数字字符串。如果转换值字符少于字段宽度&#xff0c;该字段将从左到右按指定的字段宽度填充。如果指定了左边调整选项&#xff0c;字段将在右边填充。如果转换结果宽于字段宽度&#xff0c;将扩展该字段以包含转换后的结果。不会发生截断。然而&#xff0c;小的精度可能导致在右边发生截断。

    

    4. 精度.prec

用于控制小数点后面的位数&#xff0c;取值和含义如下&#xff1a;无按缺省精度显示0
 当type&#61;d,i,o,u,x时&#xff0c;没有影响&#xff1b;
 type&#61;e,E,f时&#xff0c;不显示小数点
 n(n&#61;1,2,3…)
 当type&#61;e,E,f时表示的最大小数位数&#xff1b;
 type&#61;其他&#xff0c;表示显示的最大宽度
 prec是指可选的精度。精度是一个.(点)后跟十进制数字字符串。如果没有给出精度&#xff0c;按 0(零)对待。精度指定&#xff1a;
  • * d、o、i、 u、x 或 X 转换的最少数字显示位数。
  • * e 和 f 转换的基数字符后的最少数字显示位数。
  • * g 转换的最大有效数字位数。
  • * s 转换中字符串的最大打印字节数目。

    

    5. 类型长度length

 类型长度指明待输出数据的长度。因为相同类型可以有不同的长度&#xff0c;比如整型有16bits的short int&#xff0c;32bits的int&#xff0c;也有64bits的long int&#xff0c;浮点型有32bits的单精度float和64bits的双精度double。为了指明同一类型的不同长度&#xff0c;类型长度(length)应运而生&#xff0c;成为格式控制字符串的一部分。

length描述
h参数被解释为短整型或无符号短整型(仅适用于整数说明符&#xff1a;i、d、o、u、x 和 X)。
l参数被解释为长整型或无符号长整型&#xff0c;适用于整数说明符(i、d、o、u、x 和 X)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串)。
L参数被解释为长双精度型(仅适用于浮点数说明符&#xff1a;e、E、f、g 和 G)。
 根据不同的 format 字符串&#xff0c;函数可能需要一系列的附加参数&#xff0c;每个参数包含了一个要被插入的值&#xff0c;替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。 [2]

    

    6. 转义序列

这些转义序列在字符串中会被自动转换为相应操作命令。使用的常见转义字符如下&#xff1a;
符号意义符号意义
\a铃声(提醒)\bBackspace
\f换页\n换行
\r回车\t水平制表符
\v垂直制表符\’单引号
\”双引号\\反斜杠
?文本问号\ooo(例如\024)ASCII字符(OCX)
\xhh (例如:\x20)ASCII字符(HEX)\xhhhh宽字符(2字节HEX)

END

客栈科技工作室

83f8856621321015e6251b929ec72f09.gif

f876f3824b25d07b78fcdff442eb419f.gif




推荐阅读
  • 我举个例子,C代码如下:#include<stdio.h>main(){charx;printf(本程序功能:任意输入一个字符,如果是字母字符,将其ASCII ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 一,关于C语言的问卷调查【作业3】1.你对自己的未来有什么规划?做了哪些准备?没有明确的规划,在学习教材知识的同时准备了解其他知识。2.你认为什么是学 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了重温Linux内核:互斥和同步相关的知识,希望对你有一定的参考价值。文章目录 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • 深入理解计算机系统之链接(一)
    程序是怎样运行的写好的c程序怎样运行的呢?答案是一个写好的程序要先经过语言预处理器,编译器,汇编器和链接器生成最后的可执行文件,然后加载器将可执行文件加载到内存中才能运行。这里以一 ... [详细]
  • 转自:http:www.phpweblog.netfuyongjiearchive200903116374.html一直对字符的各种编码方式懵懵懂懂,什 ... [详细]
author-avatar
胖儿的小金子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有