LinuxC语言的输入输出函数及运算符

1、输入输出函数

1.1 printf()

  • printf( " 格式符 + 转义字符 ",输出表像);
  • 函数原型int printf(const char *format, ...);
  • 作用:将双引号中的内容原封不动输出

1.2 格式符

格式符作用
%d十进制输出有符号数
%ld十进制输出有符号长整型
%f输出float类型
%lf输出double类型
%c输出字符类型
%s输出字符串
%u无符号输出整型的十进制
%#X/x输出十六进制
%#o输出八进制
%.nf输出小数点后n位
%nd以n个数据宽度靠右对齐输出
%-nd以n个数据宽度靠左对齐输出
%p输出内存地址

1.3 转义字符

转义字符含义
\n换行
\t制表符
\r回车
\b退格

1.4 scanf()

  • scanf()获取数据时,以空格、tab键和回车作为数据之间的分隔
  • 回车在缓冲区内数据个数大于等于格式符个数时,回车是结束的标志
  • 函数原型int scanf( const char *format, ...);
  • 用法scanf( " 格式符", 变量地址);
    注意事项
  1. 逗号后面的内容,是变量的地址
  2. scanf的双引号内不要加**\n**
  3. scanf是严格控制格式的函数,终端输入的格式要和双引号内的格式一致

1.5 getchar()

  • 在使用scanf()连续输入字符时会产生垃圾字符
  • 合理利用getchar()可以吸收垃圾字符
  • 函数原型int getchar(void);
  • 返回值:字符的ASCII码
  • 参数:void
  • 功能:从终端获取单个字符,并返回该字符的ASCII码

1.6 putchar()

  • 单个字符的输出函数
  • 函数原型int putchar(int c);
  • 返回值:int
  • 参数:int c //要输出的字符的ASCII码
  • 功能:输出单个字符
  • putchar(10);输出 \n 换行

2、运算符

2.1 算术运算符

运算符格式功能
+、-、*a +/-/* b两数相加、相减、相乘
/a / b如果运算符两侧的操作都为整型,就取整操作;如果运算符两侧有一个操作数是浮点型,结果就是整除
%a % b取a除b的余数部分;要求两个操作数都是整形

2.2 赋值运算符

运算符格式功能
=a = b把b的值赋给a
+=a += ba = a + b,把a+b的结果赋值给a
-=a -= ba = a - b
*=a *= ba = a * b

2.3 自增自减运算符

  • ++和–操作符对应两条汇编指令
    • 前置
      • 变量自增(减)1
      • 取变量值
    • 后置
      • 取变量值
      • 变量自增(减)1
  • C语言中只规定了++和–对应指令的相对执行次序
  • ++和–对应的汇编指令不一定连续运行
  • 在混合运算中,++和–的汇编指令可能被打断执行
  • ++和–参与混合运算结果是不确定的

2.3.1 小结

  • ++和–操作符在混合运算中的行为可能不同
  • 编译器通过贪心法处理表达式中的子表达式
  • 空格可以作为C语言中一个完整符号的休止符
  • 编译器读入空格后立即对之前读入的符号进行处理

2.4 关系运算符

  • 关系运算的结果,非真即假,非0即1
运算符格式功能
==a == b判断两数是否相等
!=a != b判断两数是否不相等
“>”“>=”a > / >=b判断a是否大于b/a是否大于等于b
“<”“<=”a < / <= b与上述相反

2.5 逻辑运算符

  • 逻辑运算的结果,非真即假,非0即1

  • ==||==从左向右开始计算

    • 当遇到为的条件时停止计算,整个表达式为
    • 所有条件为假时表达式才为假
  • ==&&==从左向右开始计算

    • 当遇到为的条件时停止计算,整个表达式为
    • 所有条件为真时表达式才为真
  • 逻辑表达式中,==&&||==具有更高的优先级

    • 在==&&||混合运算时,整个表达式被看作||表达式,编译器从左向右开始计算&&表达式,当某个&&==表达式的值为真时,停止计算,整个表达式的值为真。
++i || ++j && ++k
    
(true && ++i) || (++j && ++k)

i = 1	j = 0 	k = 0

2.6 三目运算符

  • 三目运算符( a ? b : c )可以作为逻辑运算的载体

    • 规则:当a的值为时,返回b的值;否则返回c的值
  • 当三目运算符作为左值时*(a < b ? &a : &b) = 3

    • 三目运算符返回的是一个值
    • 通过指针*可以通过地址对三目运算符返回的值进行修改
  • 三目运算符(a ? b : c)的返回类型

    • 通过隐式内陆转换规则返回b和c中较高的类型
    • 当b和c不能隐式转换到同一类型时编译出错

2.7 逗号运算符

  • 逗号表达式是C语言中的**“粘贴剂”**
  • 逗号表达式用于将多个子表达式连接为一个表达式
  • 逗号表达式的值为最后一个子表达式的值
  • 逗号表达式中的前 N - 1个子表达式可以没有返回值
  • 逗号表达式按照从左向右的顺序计算每个子表达式的值

2.8 sizeof()

  • sizeof是编译器的内置指示符

  • sizeof用于计算类型或变量所占的内存大小

    • sizeof用于类型sizeof(type)
    • sizeof用于变量sizeof(var)sizeof var
  • sizeof的值在编译期就已经确定

  • sizeof是C语言的内置关键字而不是函数

    • 在编译过程中所有的sizeof将被具体的数值所替换
    • 程序的执行过程与sizeof没有任何关系

2.9 位运算符

  • 位运算符直接对bit位进行操作,其效率最高
位运算符作用
&按位与
|按位或
^按位异或
~取反
<<左移
>>右移

例如:
将data的[7:4]位置1
data | (-128 >> 3);

2.9.1 左移和右移的注意点

  • 左操作数必须为整数类型
    • charshort被隐式转换为int后进行移位操作
  • 右操作数的范围必须为:[0,31]
  • 左移运算符==<<==将运算数的二进制位左移
    • 规则:高位丢弃,低位补0
  • 右移运算符==>>==把运算数的二进制右移
    • 规则:高位补符号位,低位丢弃

位运算的口诀:

  • 0与任何数都是0,与运算用于给某一位置0
  • 1或任何数都是1,或运算用于给某一位置1
  • 0异或任何数都数本身,1异或任何数都是取反

左移n位相当于乘以2的n次方

右移n位相当于除以2的n次方

2.9.2 运用位运算实现数字交换

#define SWAP(a,b)	\
{					\
	a = a ^ b;		\
	b = a ^ b;		\
	a = a ^ b;		\
}

2.10 运算符的优先级

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值