15.【C语言】初识操作符 下

05单目操作符

~:按(二进制)位取反

有关带符号整数的二进制的三种表示:原码,反码,补码

int 32个bit

表示-1

原码

10000000000000000000000000000001 (最左边是符号位,0正1负,剩余是数值位,数值为表示真值-1的绝对值) 

反码:

负数:在原码基础上数值位0改1,1改0(即按位取反),符号位不变

正数:原码即反码

-1:01111111111111111111111111111110

补码:

负数:反码末尾+1

正数:反码即补码

-1:01111111111111111111111111111111

所以正数:原码=反码=补码

表示0

原码

00000000000000000000000000000000或10000000000000000000000000000000

(+0和-0均可)

#include <stdio.h>
int main()
{
	int a = 0;
	printf("%d", ~a);
	return 0;
}

结果:-1

由于整数在内存中存储的是补码,整数的真实值是由原码得到的

printf打印的是二进制补码转成原码的十进制数字

0:原码00000000000000000000000000000000

     反码11111111111111111111111111111111

     补码11111111111111111111111111111111 (不变,如果末尾+1会溢出)

++(自增)和--(自减):

使用分为前置和后置

前置 ++a --a

后置 a++ a--

前置++:先++,后使用

int a=3;

int b=2;

b=++a;

先++(就是+1):a的值由3变4,后使用:4赋值给b 

同理b=--a;(--就是-1)

#include <stdio.h>
int main()
{
	int a = 3;
    int b = 2;
    b = --a;
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

后置++:先使用,后++

int a=3;

int b=2;

b=a++;

先使用:a的值未变时先赋值给b

后++:a的值+1

同理b=a--

(类型):当类型不匹配时,可强制类型转换
int a=(int)1.21;

把1.21强制转换为整型

(& *在第19篇)

06关系操作符

>大于

>=大于等于

<小于

<=小于等于

!=不等于

==等于(容易写成=)

07逻辑操作符

&& 逻辑与(a与b同时)

与:a与b任意一个为假则为假,a与b全真则为真

#include <stdio.h>
int main()
{
	int a = 3;//a非0,见第14篇
    int b = 2;//b非0
	int c = a && b;//逻辑与判断:a与b均非0,则a与b为真
	printf("%d\n", c);//输出1
	return 0;
}

||逻辑或(a或b)

或:a与b任意一个真则真,两个都为假则假

#include <stdio.h>
int main()
{
	int a = 0;//a假
    int b = 0;//b假
	int c = a || b;//逻辑与判断:a或b为假
	printf("%d\n", c);//输出0
	return 0;
}

08条件操作符(三目操作符) 

格式:表达式1?表达式2:表达式3即为exp1?exp2:exp3

规则:exp1成立,计算exp2,得出结果;exp1不成立,计算exp3,得出结果;(其实类似if语句)

例:输入两数输出最大值

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d", &a, &b);
	c= a > b ? a : b;
	printf("%d\n", c);
	return 0;
}

如果调用数组则简洁:

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a[3] = { 0 };
	scanf("%d %d", &a[0], &a[1]);
	a[2] = a[0] > a[1] ? a[0] : a[1];
	printf("%d\n", a[2]);
	return 0;
}

09逗号表达式 

定义:逗号隔开的一串表达式

exp1,exp2,exp3,……,expn

程序从左向右依次执行exp

整个exp的结果是最后一个exp的结果

int a=0;

int b=0;

int d=(a=a+1,c=c+2,c=c-a);

d为1

10其他操作符

介绍[ ]
[ ](下标引用操作符)可用于定义数组

介绍()

( )(函数调用操作符)printf();

格式:函数名(内容);

(.和->在第20篇 http://t.csdnimg.cn/px53w)

2.强制类型转换

格式

(类型)
int a = (int)3.14;//a的输出结果是3

float b=4/(double)5;//b的输出结果是0.800000

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值