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

【C语言】printf和scanf函数详解

基本用法,与printf相似,但是要多一个在变量前多一个&,它叫取地址符,如: 为什么要用取地址符呢,打个简单的比喻,点外卖时,骑手要知道你的地址才能给你派送,这里也是一样,输入了一个数字5,...解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到⼀个不符合条件的字符为⽌,举例如: 这里用户输入了" -13.45678# 0",首先scanf对空格进行了忽略,来到"...-13.45678# 0",此时开始读整型数据,当碰到小数点时,系统就认为,整数已经读完了,所以整型数据读出来是-13,接下来浮点数又开始从小数点处开始读取数据,碰到#时不满足浮点数的要求就中断了,剩下没有被读取的字符就被舍弃了...那如果什么都不输入,直接按三次ctrl+z呢,如图: 当scanf一个有效值都没有接受到时,就会返回常量EOF,值为-1 占位符:scanf占位符与printf的占位符基本一致,但是特别强调两个占位符...0; } 上⾯⽰例中,如果⽤⼾输⼊格式,⽐如2020-01-01 ,就会正确解读出年、⽉、⽇。

34610

C语言基础语法

4. scanf()在读取输入的内容时,如果遇到第一个空白(空格或者换行)时,就不再读取了。...整形变量在计算机中以二进制储存,但是为了使用可以表示成其他进制。 3. 八进制:0开头(010)。 4. 十六进制:0X开头(0X10) 。 整数溢出 1....在使用前要考虑它会怎么约值。...(小数点后默认6位)(如果是整数除法,则只会返回整数部分,丢弃小数部分) (%):两端只能是整数,且符号与左端一致。...如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

9010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python格式化输出(%用法和format用法)

    1位小数 2.3 >>> print('%e'%awsl) #默认6位小数,用科学计数法 2.333000e+00 >>> print('%.2e'%awsl) #取2位小数,用科学计数法 2.33e...round()函数只有一个参数,不指定位数的时候,返回一个整数,而且是最靠近的整数,类似于四舍五入 当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则 但是碰到.5的情况时,如果要取舍的位数前的小数是奇数...'x'还是'X') 0 显示的数字前面填充'0'而不是默认的空格 % '%%'输出一个单一的'%' (var) 映射变量(字典参数) m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话...在打印之前将整数转换成对应的Unicode字符串。 'd' - 十进制整数。将数字以10为基数进行输出。 'o' - 八进制。将数字以8为基数进行输出。 'x' - 十六进制。...当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。 '%' - 百分数。

    5.6K31

    整数和浮点数在内存中的存储​(大小端详解)

    在内存中,整数通常占用4个字节(这取决于系统,但在这里我们假设为4字节)。如果系统是小端的,这四个字节的存储形式将是 01 00 00 00。...如果系统是小端的,那么整数的第一个字节将是 1(或者 01 in hex)。如果是大端的,那么整数的第一个字节将是 0(或者 00 in hex)。...此时,pFloat 指向的内存中存储的是一个整数值 9。 通过 pFloat 打印该值时,由于 pFloat 是一个浮点数指针,所以它会尝试将内存中的值解释为浮点数。...这意味着你现在改变了原来存储整数 9 的内存,使其现在包含一个浮点数的表示。 再次尝试打印整数 n 的值时,它会尝试将内存中的浮点数表示解释为一个整数。...比如:0.5 的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2^(-1),其 阶码为-1+127(中间值)=126,表示为01111110,而尾数1.0去掉整数部分为

    90510

    C语言(2)----数据类型、变量以及操作符

    需要注意的是,除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。...也就是说,像3/2,原本应该得到1.5,但是由于只取整数,所以答案是1(这个规则不会因类型而改变,也就说尽管类型是float浮点数,得到也是整数) 而如果想要得到小数,符号两端的操作数就必须至少要有一个是小数...至于为什么不能用于浮点数,因为它会把余出的数给表示出来,自然就不存在小数 负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。...scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。 如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或 者遇到读取到⽂件结尾,则返回常量 EOF。...这句话的意思就是,在测试你输入了几个数的时候,你输入几个数,它读取到的就是几个数,但是如果发生了错误或者已经读取到结尾了,比如它要你输入三个数但你一个都不输入,那么它就会报错返回EOF,注意EOF在返回值中以

    11710

    python中输入输出

    大家好,又见面了,我是你们的朋友全栈君。 一个程序要进行交互,就需要进行输入,进行输入→处理→输出的过程。所以就需要用到输入和输出功能。同样的,在Python中,怎么实现输入和输出?...例如: n = input() print(n) >>>输入Python3 >>>Python3 其中输入的数据以字符串类型进行储存,如果输入数字的话,后续需要转换类型才能进行操作。...在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。...常见的占位符有: %d 整数 %f 浮点数 %s 字符串 %x 十六进制整数 其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数: >>> ‘%2d-%02d’ % (3,...1) ‘ 3-01’ >>> ‘%.2f’ % 3.1415926 ‘3.14’ 如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串: >>

    71520

    【C语言】数据在内存中的存储(万字解析)

    char,所以这里所有位置都是数值位,不含符号位    但是问题又来了,最后打印时居然用的%d,%d表示打印有符号整型,%u是无符号整型,这里统一用的%d,以有符号整型打印abc,但是abc是字符型啊,...}    这道题有点难度,它结合了我们指针的知识,但是我们已经刷了很多指针题了,这道题也是出自我们练过的某题,如果还没有刷过指针的题,看以参照我的博客:【C语言】手把手带你拿捏指针(完)(指针笔试、面试题解析...,ptr2解引用后访问4个字节,也就是上图的00 00 00 02,由于是小端字节序,所以第二个里面存放的是02 00 00 00,由于这本身就是16进制,所以打印出来就是2000000    我们来看看最后的运行结果...   ⽐如:0.5 的⼆进制形式为0.1,由于规定正数部分必须为1,即将⼩数点右移1位,则为1.0*2^(-1),其阶码为-1+127(中间值)=126,表示为01111110    而尾数1.0去掉整数部分为...M    此时的E不为全0或全1,是126,所以在取出时就要重新给E减去中间值127,然后把M去掉的整数1补回来 (2)加上中间值后E全为0    我们知道32位的中间值是127,E加上了127后还是全

    14610

    C语言详解(数据存储)

    1、大小端字节序和字节序判断 在 C语言(操作符)1 中,我们介绍了整数在内存中的存储,但是我们只介绍了整数的存储形式,并没有介绍整数是如何存储的,那本节我们就来探讨一下整数在内存中究竟是怎么存储的...当我们在一个整型变量中存一个整数1时,如果当前机器是大端字节序存储,那么它存的就是 00 00 00 01,如果当前机器是小端字节序存储,那么它存的就是 01 00 00 00。...我们又知道小端字节序是反着存的,所以ptr2指向的数值就是02 00 00 00,打印出来就是2000000。 如果我们想把代表16进制的0x也打印出来,可以在%的后面加上#。...E作为一个无符号整数,如果E为8位,它的取值范围是0~255;如果E为11位,它的取值范围是0~2047。...如果觉得我的文章还不错,请点赞、收藏 + 关注支持一下,我会持续更新更好的文章。

    8510

    前端学习(27)~js学习(五): typeof和数据类型转换

    但是对于 null 和 undefined,则不会调用 toString()方法。它会将 null 直接转换为 "null"。将 undefined 直接转换为 "undefined"。...2.只要字符串中包含了非数字的内容(小数点按数字来算),则转换为 NaN。 3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。...情况二:布尔 --> 数字 true 转成 1 false 转成 0 情况三:null --> 数字 结果为:0 情况四:undefined --> 数字 结果为:NaN 补充:怎么理解这里的...(2)如果对非 String使用 parseInt()或 parseFloat(),它会先将其转换为 String 然后再操作。...这个字符串,如果我调用 parseInt()转成数字时,有些浏览器会当成 8 进制解析,有些会当成 10 进制解析。

    1.2K20

    Python入门

    例如:博主用的 vsCode: (我vsCode使用了主题,所以可能和大众的代码颜色不同) 如果要带入多个参数,则需要用()包裹代入的多个参数,参数与参数之间用逗号隔开。..."hello")) #控制台打印:world hello 格式字符串(占位符) 格式字符串中,不同占位符的含义: 占位符 表示 %s 作为字符串 %d 作为有符号十进制整数 %u 作为无符号十进制整数...helloworld 字符串转换 input函数接收的是用户控制台输入的字符串,此时还不能作为整数或者小数进行数学运算,需要使用函数将字符串转换成想要的类型。...= float(str1) print("整数%d,小数%f" % (num1,f1)) #控制台输入:114514 #控制台输出:整数114514,小数114514.000000 如果输入10,得到的输出是...:整数10,小数10.000000。

    45770

    C语言的输入与输出

    整数部分一旦超过6位,就会自动转为科学计数法,指数部分的 e为小写(也可以用作打印有效数字,如打印2个有效数字%2g %G :等同于 %g ,唯一的区别是指数部分的 E 为大写。...%.2f\n", 0.5); return 0; } 上面示例中,如果希望小数点后面输出3位( 0.500 ),占位符就要写成 %.3f 。...它用于在输出整数时指定特定的格式。让我逐步解释一下它的含义: “%”:是格式化输出的起始标记。...这是因为 C 语言的数据都是有类型的, scanf() 必须提前知道用户输入的数据类型,才能处理数据。 它的其余参数就是存放用户输入的变量,格式字符串里面有多少个占位符,就有多少个变量。...2个数后,按 ctrl+z ,提前结束输入: 这其实是VS中的一个bug,应该输入一个ctrl + z 就行了,但是输入了三次才可以 在VS环境中按3次 ctrl+z ,才结束了输入,我们可以看到

    6800

    Java之Scanner

    以上为api里面的,意思是:这个类最实用的地方表现在获取控制台输入,尽管Java API文档中列举了大量的API方法,但是都不怎么使用。...nextLine() 此扫描器执行当前行,并返回跳过的输入信息。 hasNext() 如果此扫描器的输入中有另一个标记,则返回 true。...· 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。 · 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 · next() 不能得到带有空格的字符串。...如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取: import java.util.Scanner...; } scan.close(); } } 结果 输入整数:1 整数数据:1 输入小数:1.1 小数数据:1.1

    74120

    浮点数的坑很深,但不多

    别说 int 了,它的范围比 64 位的 long 还大: 除此之外,它还能表示小数: 小数代码。 怎么做到的?靠牺牲精度来做到的。...float 虽然也是 32 位,但它会从里面拿出 8 位来保存指数值,也就是小数点的位置。...这就导致某些 int 能表达的整数,float 却表达不了,比如 50000005(五千万零五): 这个数虽然不长,但是精度——太高了。...会被「四舍五入」到 500000.06 而没有跟前面一样是 04: 而如果把小数点往右移一位,改成 5000000.5,就直接不用「四舍五入」了: 你看,黄线没了,打印出来也是没问题的。...比如你如果用来做金额的计算,去掉小数点右边的两位之后,只有五位数字可以用了,也就是 10 万级的金额就不能用 float 了。

    33010

    【C语言基础】:数据在内存中的存储

    如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~ 一、整数在内存中的存储 在讲操作符的时候讲过,整数的二进制表示方法有三种:原码、反码和补码。...00 00 01, 如果是返回的是1,说明是小端存储,反之大端 return *((char*)&n); } int main() { int ret = check_sys(); if (ret...printf打印a、b、c都是以**%d的形式打印,%d**是来打印有符号整型的(打印的是 原码),这里的a、b、c都是字符,要整型提升成整型后才能进行打印。...至于指数E,情况就比较复杂 首先,E为⼀个无符号整数(unsigned int) 这意味着,如果E为8位,它的取值范围为0 ~ 255;如果E为11位,它的取值范围为0~2047。...比如:0.5 的⼆进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2^(-1),其阶码为-1+127(中间值)=126,表示为01111110,而尾数1.0去掉整数部分为0,

    34810

    C语言----数据在内存中的存储

    ,那么我们就需要对c进行整型提升了 //如果是有符号的话,我们是按照符号位进行提升的 //但是如果是无符号的话,高位补0 //0000000000000000000011111111...// 如果是有符号的话,我们是按照符号位进行提升的 // //但是如果是无符号的话,高位补0 //我们在整型提升的时候还是要根据数据的本身类型来说 // //#include <...128原码 // //128和-128截断之后是一样的 // //10000000--因为a是1个字节的,我们只能取8个比特位 // // // //我们需要进行整型提升才能进行打印...00 00 00 02--因为这个地址在内存中是小端存在的, 所以原始的就是02 00 00 00 换成16进制的就是0x02 00 00 00 所以打印出来的就是2000000...} /* 我们要清楚我们是以什么形式放进去的,怎么形式取出来的, 我以整数的形式放进去的,我以整数的视角取出来,那么就按照整数的视角计算原反补 我以浮点数的形式放进去的,我以浮点数的视角取出来,

    4610

    【C语言进阶】内存中浮点数的存储规则

    但是你们知道在内存中是怎么存储的吗? 一、什么叫做浮点数? 在生活中我们常见的浮点数: 3.14 1E10 这种科学计数法:由于小数点可以左右移动,所以我们称为浮点数。...首先,E为一个无符号整数(unsigned int) 这意味着,如果E为8位,它的取值范围为0 ~ 255;如果E为11位,它的取 值范围为0 ~ 2047。...1011 0000 0000 0000 0000 0000 //0x40 b0 00 00 return 0; } 扩展: 为什么5.5的二进制是101.1 0.5为什么转二进制会成为0.1呢...比如: 0.5(1/2)的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为 1.0*2^(-1),其阶码为 -1+127=126,表示为 01111110, 而尾数1.0去掉整数部分为...E=0 M= 0…1010 这里就是指数E为0的时候 套用浮点数计算公式 V = (-1)^S * M * 2^E 我们拿出的是一个无限接近0的一个小数 而%f只打印6个零就不打印了所以我们打印的是

    25910

    python系列(二)python变量赋

    4、输入与输出 1)输入(print) ? 如果输出多个字符,可以使用“,“隔开,print()会依次打印每个字符串,遇到逗号“,”会输出一个空格。(只在3.0版本中生效)。 ?...print()打印整数,或者计算结果: ? 2)输入(input或者raw_input) ? 说明:当你输入name =input()并按下回车后,Python交互式命令行就在等待你的输入了。...6、常用数据类型 1)整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。 2)浮点数 浮点数也就是小数。...4)格式化整数 格式化整数和浮点数还可以指定是否补0和整数与小数的位数: ? %3d:代表整数替换,具有三个占位符。...5)格式化整数与小数的位数: ? 注意:.2f是取小数点后2位。 注:如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串: ? 字符串里面的%是一个普通字符怎么办?

    86010
    领券