(四)运算符及输入输出

一、运算符
算术运算符、关系运算符、逻辑运算符、位运算符
1、算术运算符
+ - * / % ++ --
%:小数没有取模运算
++:
++在前:先自加,后赋值
++在后:先赋值,后自加
2、关系运算符
> < == >= <= !=

if(a == 5) 建议写成if(5 == a),以防写成if(a = 5)

3、逻辑运算符
&&:两边同时为真时,其值才为真
截断法则:当&&左边为假时,其值一定为假,所以&&右边不执行
||:两边同时为假,其值才为假
截断法则:当||左边为真时,其值一定为真,所以||右边不执行

4、位运算符 ~ & | ^ << >>
~10101100 01010011

&: 0011 1100
& 1011 0011
    0011 0000
(1)判断某个数的某一位是0还是1
    0011 1100
& 0010 0000
            0010 0000
(2)清除某个数的某一位或某几位
    0011 1100
& 1100 0111
    0000 0100
(3)设置某个数的某一位或某几位(先清0,再设置, 先与后或)
      0011 1100
& 1100 0111

    0000 0100
|   0010 1000
    0010 1100
^ : 两个位进行异或时,相同为0,不同为1
   0011 1100
^ 0000 0000
  0011 1100
一个变量与0异或,结果是变量本身
   0011 1100
^ 1111 1111
   1100 0011
翻转某个数的某一位段
   0011 1100
^ 0011 1000
   0000 0100
<<:左移
左移时,可能会引起符号位的改变
溢出部分不要,右边补0
>>:右移
溢出,溢出部分不要
高位:正数:高位补0
负数:高位补1

5、条件运算符
三目运算符:表达式1 ? 表达式2 : 表达式3;
其求值过程:判断表达式1是否成立,如果成立,执行表达式2,否则执行表达式3
定义宏函数时,因为宏只是单纯的符号替换,所以需要给每个变量加上括号,并且给整个表达式加上括号;
6、逗号运算符
表达式1, 表达式2;
其求值过程分别求两个表达式的值,并以表达式2的值作为整个表达式2的值;
逗号运算符的优先级最低
表达式1, 表达式2, 表达式3,……,表达式n;
每个表达式都会执行,并把表达式n的值作为整个表达式的值;
sizeof:计算所占内存的大小(字节)
sizeof(数据类型/变量名);

二、

1、字符的输入与输出
getchar:函数原型 int getchar(void)
返回值:成功:读到字符的ASCII值
失败:-1
putchar: int putchar(int c);
功能:向终端打印一个字符
其中参数c,表示要输出的字符的ASCLL值
返回值:成功:成功输出的字符的ASCLL值
失败:-1

#include<stdio.h>
int main()
{
	char str = getchar();
	printf("%c\n,%d\n",str,str);
	return 0;
}
#include<stdio.h>
int main()
{
	char str = 'A';
	int ret = 0;
	ret = putchar(str);
	putchar(97);
	printf("\nret=%d\n",ret);
	return 0;
}



2、标准格式化输入与输出
printf:
int printf(“格式控制串“,输出表);
功能:向终端打印输出
返回值:成功:成功输出的字符数(按终端统计)
失败:-1

%d——输出有符号的十进制整型数
%hd——有符号的十进制的短整型数
%ld——long
%lld——long long
%o——八进制无符号整数
%x/X——十六进制无符号整数
#——自动在 八进制前面加0,在十六进制前面加0x
%c——字符型
%f——单精度的有符号浮点数
%lf——double
%e——指数形式浮点数
%g——%f与%e较短的一种
%s——字符串,以‘\0’结尾
m——输出数据的域宽,如果数据的宽度大于m时,数据按原样输出,小于m时,数据右对齐,左补空格
-——左对齐,右补空格
.n——浮点数小数位保留n位,第n+1四舍五入
打印字符串时,n表示打印多少个字符
#include<stdio.h>
#include<stdbool.h>
int main()
{
	int a = -10;
	float b = 3.1415;
	double c = 9.7865342;
	char d = 'E';
	unsigned int e = 8976;
	short f = 67;
	bool g = false;
	float h = 31456;
	unsigned int i = 34;
	char str[6] = "abcde";
	printf("a=%-5d,b=%4f,c=%4.2lf,d=%c,e=%#X,e=%#o,e=%2u,f=%4hd,g=%d,h=%e,i=%u,str=%.4s\n",a,b,c,d,e,e,e,f,g,h,i,str);
	return 0;

}


scanf——标准格式化输入函数
int scanf(“格式控制串”,地址表);
功能:按指定的格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束
返回值:成功:成功输入的变量的个数
失败:返回-1
当需要给多个变量赋值时,就存在了怎么去分割的问题,一般以空格、tab键、回车键
分隔符
当输入字符数据时,容易产生垃圾字符‘ 空格 ’,‘\n’
解决办法:1、%*c *表示不把输入的值赋给变量
    2、getchar();
#include<stdio.h>
int main()
{
	int a,b,c;
	int ret;
	char str[5]="abcd";
	printf("input three nums:\n");
	ret=scanf("%d%d%d",&a,&b,&c);
	printf("a=%d,b=%d,c=%d,ret=%d\n",a,b,c,ret);
	return 0;
}


3、字符串的输入与输出
gets:char *gets(char *s);
功能:从键盘得到一个以回车结束的字符串放到字符数组中,并自动加‘\0’
s:字符数组
返回值:成功则返回字符数组的起始地址
失败:NULL
puts:int puts(const char *s);
功能:向终端输出字符串
参数:s:需要输出的字符串
返回值:成功:成功输出的字符的个数
失败:-1
使用gets时注意不要越界,只能输入n-1个;
并且gets只以回车作为字符串的输入结束标志。

#include<stdio.h>
int main()
{
	char str[10];
	unsigned int num;
	char *p = NULL;
	p = gets(str);
	num = puts(str);
	printf("p=%p\n,num=%u\n,str[0]=%p\n",p,num,&str[0]);

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值