C语言的基本知识

格式控制符

  • %d:输入十进制数,把后面参数当十进制输出,还有%zd(size_t类型无符号整数)%ld等。
  • %s,输出字符串。
  • %c:输出字符。
  • %f:输出小数,单精度浮点型。
  • %lf:输出小数,双精度浮点型。
  • %e:以科学计数法输出。
  • %o:输出八进制。%#0可以显示进标识,%同理,例子:0x34,前两个0x就是标识。
  • %x:输出十六进制。(%X是使用大写来表示)
  • %u:无符号10进制整数

类型名

  • int :整型。
  • short:短整型。
  • long:长整型。
  • float:单精度浮点型。
  • double:双精度浮点型。
  • char:字符型。

数据在内存中的储存

  • int:整型在计算机所占的大小为4个字节。
  • short:短整型在计算机中所占的大小为2个字节。
  • long:长整型在计算机中的所占的大小为8个字节。
  • float:单精度浮点型在内存中所占大小为4个字节。
  • char :字符型在计算机中所占大小为1个字节
  • double:双精度浮点型在内存中所占的大小为8个字节。

变量

变量与常量不同,变量的值是可变的,通常用小写来声明,声明变量实际上是在内存中分配了一个空间,声明变量的格式是,类型名+变量名。在函数中声明了一个(局部)变量,没有给它赋值,那系统就会给他一个随机值,为函数外声明了一个(全局)变量,那么它默认为零。

常量

就是程序中不可改变的值,比如说PI=3.14,在c语言中我们习惯用全大写来写常量,宏定义define通常用来定义常量。

输入函数scanf

scanf为输入函数,在scanf中函数中,在这里我想说两个问题,在我们输入字符%c的时候,很有可能出现下面这个问题:

运行结果如下:

可以看到输出的字符结果为空,原因是这样的:当输入完数字之后我们需要按下回车,但这个回车也是一个字符,存在于是scanf的缓冲区中,在上面的程序中缓冲区为34 和 回车符,于是scanf就会回车传给gender,导致我们无法再去向gender输入。为解决这个问题,我们会用getchar()去消化这个回车符,只需要在第二个scanf加上getchar();就可以。

有字符就会有字符串,我们存字符串会用数组,比如char str[50]=" ",那么我现在改名了,叫Mi sir,(中见有空格的情况)想用scanf输入传入到数组里,来试一下:

看下运行结果:

可以看到,我输入的是Mi sir,但scanf只接收到了Mi,那我们如何接收空格呢?也就是说scanf中不能包含空格,那该如何是好,这里我了解到的是使用fgets()函数,这个函数可以包含空格:

来使用一下:

要知道数组名name就是一个地址,可以看到,成功输入了。以上问题希望能引起注意。

计算机中的二进制

假设我们定义了一个char类型的变量,赋给变量一个值,200,使用printf语句打印它,那么你觉得它会打印出是200吗,肯定没有那么简单:

char类型在内存中占一个字节,也就是八个比特位,八位二进制对应最大数是255,为什么打印不出来200,而是-56,那是因为忽略了符号位,在char是有符号,二进制的第一位就是符号位,1代表负,也就是说char类型可以表示的是-128   ~   127范围的数字, 当给char超过这个范围就会出现问题,下面说明打印是-56的原因:

   

强制类型转换

在C语言中,把一个变量num 定义为float,但在我们想将这个变量在某个函数中使用,而这个函数要求参数为整型,这时我们就需要将 float  强制转换成 int ,强制转换的方法为(int)num,这样num就会被强制转换成整型,这个操作在C语言中使用的非常多,下面是一个简单的例子。

 上面描述的是强制类型转换的一种:显示转换。

还有一种是:隐式转换。看图,假设一个float和long类型的变量相加,得到的变量类型就会是double类型,int类型和unsigened类型相加,得到的就会是unsigned类型。记住这幅图就可以轻松拿捏隐式转换。

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值