c[day5]

本文详细介绍了C语言中的数据类型,包括int、long、double等,以及它们的内存占用、表示范围和输入输出格式。还讨论了类型安全、sizeof运算符、浮点数的输入输出、字符处理和逻辑运算。同时,提到了自动类型转换和强制类型转换的规则,以及函数的使用和局部变量的概念。
摘要由CSDN通过智能技术生成

类型安全
早期语言强调类型, 面向底层的语言强调
类型
C 语言需要类型, 但是对类型的安全检查并不足够
数据类型

  1. 类型名称: int 、long 、double。
  2. 输入输出时的格式化: %d 、%ld 、%lf 。
  3. 所表达的数的范围: char < short < int < float < double。
  4. 内存中所占埠的大小:1 个字节到16 个字节 。
  5. 内存中的表达形式:二进制数( 补码)、编码。

sizeof

  1. 是静态运算符, 它的结果在编译时刻就决定
  2. 不要在sizeof 的括号里做运算, 这些运算不会做的
int a=6;
printf("sizeof(a)=%ld\n",sizeof(a++));
printf(""a=%d\n",a);
return 0;

输出结果
sizeof(a)=4
a=6

补码的意义:拿补码和原码可以加出一个溢出的“零”。

unsigned

  1. 如果一个字面量常数想要表达自己是unsigned, 可以 在后面加u或U
  2. 用l或L 表示long(long)
  3. unsigned 的初衷并非扩展数能表达的范围, 而是为了做纯二进制运算, 主要是为了移位。

整数的输入输出

只有两种形式: int 或long long
%d: int
%u: unsigned
%ld: long long
%lu: unsigned long long
%o: 输出八进制
%x: 输出十六进制 %X:输出大写的十六进制 0x1A
8进制和16进制只是如何把数字表达为字符串,与内部如何表达数字无关

浮点的输入输出

类型scanfprintf
float%f%f,%e
double%if%f,%e

%e科学计数法形式

输出精度

在% 和f 之间加上.n可以指定输出小数点后几位,这样的输出是做4舍5入的
printf("%.3f\n",-0.0049 );
超过范围的浮点数

  1. printf 输出inf 表示超过范围的浮点数: ±∞
  2. printf 输出nan 表示不存在的浮点数
  3. 带小数点的字面量是double而非float,float需要用f/F后缀表明身份。

f1==f2可能失败
fabs(f1-f2)<1e-12

  • 浮点数判断相等时允许误差范围内来认定。
  • 无特殊需要是浮点类型选double。

字符的输入输出

%c
scanf("%d %c",&a,&b)不等于scanf("%d%c",&a,&b)
当输完a值后,打空格则后者对于b的读取即为空格space(‘32’)

大小写转换

字母在ASCII表中是顺序排列的
大写字母和小写字母是分开排列的, 并不在一起
’ a ‘-‘A’ 可以得到两段之间的距离, 于是
a +’ a ‘-‘A’ 可以把一个大写字母变成小写字母, 而
a +’ A '-‘a’ 可以把一个小写字母变成大写字母

自动类型转换

  • 当运算符的两边出现不一致的类型时, 会自动转换成较大的类型
  • char 一 > short 一 > int 一> long 一> long long
    int 一> float 一> double
  • 对于printf, 任何小于int 的类型会被转换成int ;float 会被转换成double
  • 但是scanf 不会, 要输short , 需要%hd

强制类型转换

  • 要把一个量强制转换成另一个类型( 通常是较小的类 型) , 需要: ( 类型) 值
  • 只是从那个变量计算出了一个新的类型的值, 它并不改变那个变量, 无论是值 还是类型都不改变
  • 强制类型转换优先级高于四则运算

bool

#include<stdbool.h>

逻辑运算

优先级:!>&&>||

短路

逻辑运算是自左向右进行的, 如果左边的结果已经能决定结果了, 就不会做右边的计算。

  • 对于&& , 左边是false 时就不做右边了
  • 对于||,左边是true 时就不做右边了
    不要把复制组合进表达式

函数

函数头:返回类型 函数名(参数表)
{
函数体
}

调用函数
函数名(参数值);
没有参数也需要()
本地变量:定义在函数内部的变量
C语言不允许函数嵌套定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值