【C语言笔记】<四>运算符
2018-04-21 本文已影响38人
大基本功
赋值运算符
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 1.最简单的赋值运算符
// 赋值运算符的结合性: 从右至左
// int result = 10;
// 2.复合赋值运算符: += -= *= /= %=
int result = 10;
// result = result + 5;// result = 10 + 5; result = 15
// result += 5; // 相当于 result = result + 5;
result -= 5; // 相当于result = result - 5;
printf("result = %i\n", result);
return 0;
}
自增自减
int main(int argc, const char * argv[]) {
// 1.自增自减基本概念
/*
int result = 10;
// result = result + 5;
// result += 5;
// result = result + 1;
// result += 1;
// 自增: 如果想让某一个数加1可以使用自增
// result++;
// result++;
// result = result - 1;
// result -= 1;
// 自减: 如果想让某一个数减1可以使用自减
// result--;
*/
// 2.自增的两种写法
/*
// result++;
// ++result;
// 自减的两种写法
result--;
--result;
printf("result = %i\n", result);
*/
// 3.自增自减写在前面和后面的区别
/*
// 如果++写在变量的前面, 那么会先将变量自增再用自增之后的结果参与运算
// 如果++写在变量的后面, 那么会先将变量的值参与运算再将变量自增
// 总结一句话: ++在前, 先自增再运算, ++在后, 先运算再自增
int a = 10;
// int b = a++;// b = 10, a = 11
// int b = ++a;// a = 11, b = 11;
// int b = a--;// b = 10, a = 9;
int b = --a; // a = 9, b = 9;
printf("a = %i , b = %i\n", a, b);
*/
/*
// 无论++在前还是在后, 最终都会自增一次
int a = 10;
// 10 + 12
// int b = (a++) + (++a);
// a = 12
// b = 22
// 10 + 11
// int b = (a++) + (a++);
// a = 12
// b = 21
// 11 + 12
int b = (++a) + (++a);
// a = 12
// b = 23
printf("a = %i, b = %i\n", a, b);
*/
/*
// 5++;
double doubleValue = 10.9;
doubleValue++;
printf("%f", doubleValue);
*/
int a = 10;
// int b = a++;
// b = a; a = a + 1;
int b = ++a;
// a = a + 1; b = a;
printf("a = %i, b = %i\n", a, b); // a = 11, b = 11
return 0;
}
sizeof
int main(int argc, const char * argv[]) {
// sizeof可以用来计算一个变量或一个常量、一种数据类型所占的内存字节数
// 注意: sizeof是一个运算符, 不是一个函数
// 利用sizeof计算的格式: sizeof(变量/常量/数据类型);
// 1.计算常量占用的内存字节数
/*
// int number = sizeof(10);// 10是一个整型常量, 整型 == int == 4
// 如果利用sizeof计算常量, 那么可以省略()
int number = sizeof 10;
printf("number = %i\n", number);
*/
// 2.计算变量
/*
double doubleValue = 10.9;// doubleValue是实型 , 实型 == double == 8
// int number = sizeof(doubleValue);
// 如果利用sizeof计算变量, 那么可以省略()
int number = sizeof doubleValue;
printf("number = %i\n", number);
*/
// 3.计算数据类型
/*
int number = sizeof(char);
// 注意: 如果利用sizeof计算数据类型, ()不能省略
// int number = sizeof char;
printf("number = %i\n", number);
*/
return 0;
}
关系运算符
int main(int argc, const char * argv[]) {
/*
关系运算符:
>
<
>=
<=
==
!=
关系运算符的返回值只有两种, 要么真, 要么假. 1(真)和0(假)
*/
// 1.基本使用
/*
int a = 10;
int b = 5;
int result = a > b;// 吗? 大于, 真, 非0即真.
printf("result = %i\n", result);
*/
/*
int a = 10;
int b = 8;
int result = a != b;
printf("result = %i\n", result);
*/
// 2.关系运算符注意点
/*
// 关系运算符也有优先级. > < >= <= 优先级大于 == !=
// 1 == 1
// int result = 1 == 10 > 5;
// 算术运算符的优先级 大于 关系运算符
// 2 < 4
// int result = 1 + 1 < 2 + 2;
// 关系运算符的结合型: 从左至右
// 1 > 1
// int result = 10 > 3 > 1;
// 如果优先级和结合性同时存在, 先优先级再结核性
// 11 > 9 == 3 > 1
// 1 == 3 > 1
// 1 == 1
int result = 10 + 1 > 5 + 4 == 3 > 1;
printf("result = %i\n", result);
*/
return 0;
}
逻辑运算符
int main(int argc, const char * argv[]) {
/*
逻辑运算符的返回值只有两种: 要么真要么假, 要么是1(真), 要么是0(假)
&&(与运算)
格式: 表达式1 && 表达式2
结合性: 从左至右
只有表达式1和表达式2都为真的时候, 逻辑与表达式才返回真
如果表达式1或者表达式2中有一个是假, 那么逻辑与表达式返回的结果都是假
口诀: 一假则假
||(或运算)
格式: 表达式1 || 表达式2
结合性: 从左至右
只要表达式1或者表达式2中有一个是真的, 逻辑或表达式返回的值就是真
只有表达式1和表达式2的值都是假, 逻辑或的值才是假
口诀: 一真则真
!(非运算)
格式: !表达式
结合性: 从右至左
如果表达式是真, 就返回假
如果表达式是加, 就返回真
取反
*/
// 1.基本使用
/*
// 1 && 0
int result = 10 > 8 && 5 > 8;
printf("result = %i\n", result);
*/
/*
// 1 || 0
int result = 10 > 18 || 15 > 8;
printf("result = %i\n", result);
*/
/*
int result = !(10 > 18);// !0
printf("result = %i\n", result);
*/
// 2.注意点:
/*
// 由于C语言规定, 任何数值都有真假性, 非0即真. 所有逻辑运算符可以直接与数值进行计算
// int result = 0 && 11;
// int result = 0 || 0;
// 逻辑非结合性: 从右至左
int result = !!!!!!1;// 0
printf("result = %i\n", result);
*/
// 由于逻辑与有一个特点: 一假则假, 所以如果前面的表达式的值为假, 那么后面的表达式没有必要参与运算
// int result = 10 > 18 && 9 > 5;
// int a = 10;
// int result = 10 > 18 && ++a > 5;
// printf("result = %i , a = %i\n", result, a);
// 由于逻辑或有一个特点: 一真则真, 所以如果前面的表达式的值为真, 那么后面的表达式没有必要参与运算
// 逻辑与和逻辑或的这个特点, 称之为逻辑运算符的短路
int a = 10;
int result = 10 > 18 || ++a > 5;
printf("result = %i , a = %i\n", result, a);
return 0;
}
三木运算符
int main(int argc, const char * argv[]) {
/*
int a = 20;
int b = 15;
// int result = a > b;
// 三目运算符格式: 条件表达式 ? 结果A : 结果B
// 结合性: 从左至右
// 只要条件表达式为真就返回结果A, 如果条件表达式为假, 那么就返回结果B
// a大于b吗? 如果a大于b就返回a, 否则返回b
// int result = (a > b)? a : b;
// 三目运算符的优先级: 低于关系运算符和算术运算符
// 25 > 15 ? 20 : 15
int result = a + 5 > b ? a : b;
printf("result = %i\n", result);
*/
return 0;
}