//
// main.c
// 运算符与表达式
//
// Created by zhangxueming on 15/5/27.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#include <stdio.h>
//表达式:由运算符常量变量构成的式子
//a+b 4+5*a a*(b/c)
//表达式有确定的值与类型
//自增自减运算符
//++ --
//int main(int argc, const char * argv[]) {
// int a = 10;
// int b = 20;
// int c = 30;
// printf("a = %d\n", a++);//先运算表达式的值, a的值再加1
// printf("a = %d\n", a);
// printf("a = %d\n", ++a);//先将a的值加1, 再计算表达式的值
// //++a <==> a = a+1
// printf("b = %d\n", b--);
// printf("b = %d\n", b);
// printf("b = %d\n", --b);//--b <==> b = b-1;
//
// //printf("value = %d\n", ++a++);//错误
// //printf("value = %d\n", (c++ + c--));//同一个表达式中, 一个变量不可以被修改多次
// return 0;
//}
//算术运算符
// / * % + -
//优先级
// / * % > + -
//int main(int argc,const char *argv[])
//{
// int a=10, b = 20;
// printf("a+b = %d\n", a+b);
// printf("a-b = %d\n", a-b);
//
// printf("a*b = %d\n", a*b);
// printf("a/b = %d\n", a/b);//a/b 表达式的类型 是int
//
// printf("a%%b= %d\n", a%b);
//
// printf("value = %d\n", a+b/a);
//
// return 0;
//}
//关系运算符
// > >= < <= == !=
//表达式成立 值为1, 表达式不成立 值为0
//int main(int argc,const char *argv[])
//{
// int a=30, b=20;
// printf("a>b = %d\n", a>b);
//
// printf("a>=b = %d\n", a>=b);
//
// printf("a<b = %d\n", a<b);
//
// printf("a<=b = %d\n", a<=b);
//
// printf("a==b = %d\n", a==b);
//
// printf("a!=b = %d\n", a!=b);
//
// return 0;
//}
//逻辑运算符
//逻辑非: !
//逻辑与(逻辑乘):&&
//逻辑或(逻辑加):||
//! > && > ||
//! 真值表
// 表达式 !表达式
// 真 假
// 假 真
//int main(int argc,const char *argv[])
//{
// int a = 10;
// printf("value = %d\n", !a);
// return 0;
//}
//&&
// 表达式1 表达式2 ... 表达式
// 真 真 真
// 假 真 假
// 真 假 假
// 假 假 假
//结论:只有所有表达式的值都为真的情况, 整个表达式的值才为真, 否者为假
//int main(int argc,const char *argv[])
//{
// int a=0, b=0;
// printf("value = %d\n", a&&b);
// return 0;
//}
// ||
//表达式1 表达式2 ... 表达式
//真 真 真
//假 真 真
//真 假 真
//假 假 假
//结论:任意有一个表达式为真, 则整个表达式为真,只有所有的表达式都为假的时候, 整个表达式的值为假
//int main(int argc, const char *argv[])
//{
// int a=0, b = 0;
// printf("value = %d\n", a||b);
//
// return 0;
//}
//条件运算符(三目运算符)
// ?:
//条件表达式?表达式1:表达式2
//首先判断条件表达式是否成立 成立整个表达式的值就是表达式1的值 否则是表达式2的值
//int main(int argc,const char *argv[])
//{
// int a=40, b=80;
// int c=50;
// printf("min = %d\n", a<b?a:b);
//
// printf("max = %d\n", (a>b?a:b)>c?(a>b?a:b):c);
// printf("min = %d\n", (a<b?a:b)<c?(a<b?a:b):c);
//
// return 0;
//}
//赋值运算符
// = *= /= %= += -=
//int main(int argc, const char *argv[])
//{
// int a=10;//初始化:在定义变量的同时, 给变量一个初值
// int b;
// b = 20;//赋值语句
//
// printf("a = %d\n", a*=10);// a= a*10;
// printf("a = %d\n", a/=10);// a= a/10;
//
// printf("a = %d\n", a+=20);// a= a+20;
// printf("a = %d\n", a-=20);// a= a-20;
//
// printf("a = %d\n", a%=2); // a= a%2;
//
// return 0;
//}
//逗号运算符
// ,
//表达式1,表达式2,表达式3,....,表达式n;
//整个表达式的值就是表达式n的值
//int main(int argc,const char *argv[])
//{
// int a=10,b=20;
// int c;
// printf("value = %d\n",(c=a+b,a-b));
// printf("value = %d\n", (a++,b++,a+b));
// return 0;
//}
//优先级 : 括号>单目运算符(! ++ --) > 算术运算符(/ * % 大于 + -) > 关系运算符(> >= < <= 大于 == !=) > 逻辑运算符 (&& 大于 ||) > 条件运算符(?:) > 赋值(= /= *= %= += -=) > 逗号运算符(,)
//可以通过加括号的方式提升优先级
//int main(int argc,const char *argv[])
//{
// int a=10, b=20, c=30;
//
// printf("value = %d\n", a*(b+c));
// return 0;
//}
//scanf printf用法
//int scanf(const char *format, ...)
//int main(int argc,const char *argv[])
//{
// int a, b;
// char ch;
// char ch2;
// scanf("%d%d%c",&a,&b,&ch);//&取地址符, 最后一个占位符与双引号之间不要加任何东西,造成输入阻塞
// //printf("%p %p\n",&a, &b);
// getchar();
//
// scanf("%c",&ch2);
//
// printf("a = %d b = %d\n", a,b);
// printf("ch = %c\n", ch);
// printf("ch2 = %c\n", ch2);
//
// return 0;
//}
//强制类型转换
//int main(int argc,const char *argv[])
//{
// //00000000 00000000 00000000 00001010
// //00000000 00000000 00000000 00010100
// //------------------------------------
// //00000000 00000000 00000000 00011110
// //正数位扩展,高位补0
//// int a=10;
//// char b= 20;
//// printf("a+b = %d\n", a+b);//隐式转换
//
// int a=6;
// char b=-5;
// //对于负数发生位扩展, 高位补1
// //00000000 00000000 00000000 00000110
// //11111111 11111111 11111111 11111011
// //-----------------------------------
// //00000000 00000000 00000000 00000001
//
// printf("a+b = %d\n", a+b);//隐式转换
//
// int num=10;
// float f=3.14;
// printf("%f\n",num+f);//隐式转换 int 提升成float
//
// printf("%d\n",(int)(num+f));//显示转换
// printf("%d\n", num+(int)f);
// return 0;
//}
//int main(int argc, const char *argv[])
//{
// int a=0x2345;
// char b;
// b = a;//发生了位截断, 高24位丢弃
// printf("a = 0x%x\n", a);
// printf("b = 0x%x\n", b);
//
// return 0;
//}
//char short int long long long
//float double long double
//1. char short 向int看齐
//2. char short int 向 long longlong 看齐
//3. 整型向浮点类型看齐
//4. float double 向long double看齐
//int main(int argc,const char *argv[])
//{
// char a=10;
// short b = 20;
// printf("a+b = %d\n", a+b);
//
// return 0;
//}
转载于:https://www.cnblogs.com/0515offer/p/4543744.html
转载请注明原文地址: https://win8.8miu.com/read-1541615.html