运算符与表达式
//常量: 是C语言中最基本的元素, 字符常量, 整型常量, 浮点常量, 字符串常量, 枚举常量
//字符常量: 'a' 'f' '\n' '0' '\f'
//'0' 48
//'A' 65
//'a' 97
//1.用单引号包含
//2.有且只有一个字符
//3.打印字符%c占位符
//4.字符常量在内存中占用4字节
//5.字符变量占用1个字节空间
//'\n' '\f' '\t' '\r' '\0' '\'' '\"' '\\'
/*#include <stdio.h>
int main(int argc, const char * argv[]) {
// char ch;
// scanf("%c",&ch);
// printf("%d\n", ch);
// printf("%c\n", ch);
printf("%lu\n", sizeof('a'));
char ch2 = 'A';
printf("ch2 = %lu\n", sizeof(ch2));
printf("%%\n");//两个%输出一个%
return 0;
}*/
//字符串常量
// "helloworld"
//1.用双引号包含
//2.打印字符串用%s
//3.'\0'是字符串结束标志
//4.字符串中的每个字符占一个字节空间
//
//#include <stdio.h>
//
//int main(int argc,const char *argv[])
//{
// char *str = "helloworld";
//
// printf("%s\n",str);
// printf("%lu\n", sizeof("helloworld"));
// return 0;
//}
// '0' 0 "0" '\0' "\0"
//
//#include <stdio.h>
//
//int main(int argc,const char *argv[])
//{
// printf("%lu\n", sizeof("\0"));
// return 0;
//}
//#include <stdio.h>
////整型常量: 456 98 %d %ld %lld %u %lu %llu
////浮点常量: 3.14 7899.6789 %f %lf %Lf
//int main(int argc, const char *argv[])
//{
// printf("%ld\n", sizeof(786789876567890));
// printf("%ld\n", sizeof(3.1445678765434));
//
// return 0;
//}
//变量: 是内存中一块命名的内存空间
//变量定义: int a; float f;
//数据类型 + 标识符
//变量声明: extern int a;
//告诉编译器有对应的变量存在
//变量定义与变量声明区别: 变量定义为变量开辟指定数据类型大小的内存空间, 变量声明告诉编译器,该变量已经定义,从其它位置查找,不会再给变量开辟空间;
#include <stdio.h>
extern float f;
int main(int argc,const char *argv[])
{
// int a;
// a = 10;
// printf("%d\n", a);
printf("%.2f\n", f);
return 0;
}
float f=3.14;
//标示符规范: 以字母,或者下划线开头,后面跟若干个字母 数字 下划线,不能为C语言中的关键字
//abc _abc
//1. 必须以字母或者下划线开头
//2. 不能使用C语言中的关键字
//3. 通常下划线开头的关键字给编译器使用
//运算符
//负号运算符: -
//自增自减运算符: ++ --
//算术运算符: * / % + -
//关系运算符: > >= < <= != ==
//逻辑运算符: ! && ||
//三目运算符: ?:
//赋值运算符: = *= /= %= += -=
//逗号运算符: ,
//表达式: 由变量常量及运算符构成的式子
//4+5 a+b (a+b)*c
//表达式有确定值, 跟数据类型
//#include <stdio.h>
//
//int main(int argc,const char *argv[])
//{
// int a=3;
// int b = 5;
// printf("%d\n", a+b);
//
// return 0;
//}
//-号运算符属于单目运算符
#include <stdio.h>
//int main(int argc, const char *argv[])
//{
// int a=-10;
// printf("%d\n", -a);
// return 0;
//}
//++ --
/*int main(int argc,const char *argv[])
{
int a=11, b=21;
printf("%d\n", a++);//a=a+1;
printf("%d\n", a);
printf("%d\n", ++a);
printf("%d\n", a);
printf("%d\n", b--);
printf("%d\n", b);
printf("%d\n", --b);
printf("%d\n", b);
//printf("%d", ++a++);//不合法
//printf("%d %d\n", ++a,--a);//同一条C语言语句中,同一个变量不能被修改多次, 结果是未定义的
//printf("%d %d\n", a, a--);
return 0;
}*/
//* / % + -
//int main(int argc,const char *argv[])
//{
// int a=3, b=5;
// 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("%d\n", a+b*a);
// return 0;
//}
//> >= < <= != ==
//a>b
//int main(int argc,const char *argv[])
//{
// int a=30, b=20;
// printf("%d\n", a>b);//表达式成立,值为!0 表达式不成立, 值为0
// printf("%d\n", a>=b);
// printf("%d\n", a<b);
// printf("%d\n", a<=b);
// printf("%d\n", a!=b);
// printf("%d\n", a==b);
// return 0;
//}
//&& (逻辑与 逻辑乘) || (逻辑或 逻辑加) !(逻辑非)
// &&
// 表达式1 表达式2 ... 表达式值
// 真 真 真
// 假 真 假
// 真 假 假
// 假 假 假
//结论: 表达式1到表达式n中, 有一个表达式为假, 那么整个表达式为假
// ||
//表达式1 表达式2 ... 表达式值
// 真 真 真
// 假 真 真
// 真 假 真
// 假 假 假
//结论: 表达式1 到表达式n中, 有一个表达式为真, 那么整个表达式为真
//!
// 表达式 表达式值
// 真 假
// 假 真
//int main(int argc,const char *argv[])
//{
// int a=10, b=0;
// printf("%d\n", a&&b);
//
// printf("%d\n", a||b);
//
// printf("%d\n", !a);
// //20>a>10
//
// printf("%d\n", (a>5)&&(a<20));
//
// return 0;
//}
//三目运算符: ?:
//int main(int argc,const char *argv[])
//{
// int a=30, b=20;
// printf("max = %d\n", a>b?a:b);//求两个数的最大值
// printf("min = %d\n", a<b?a:b);//求两个数的最小值
// return 0;
//}
//求三个数的最大值最小值
//int main(int argc, const char *argv[])
//{
// int a, b, c;
// scanf("%d %d %d",&a, &b, &c);
// 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=5;
// int c=8;
// a= 20;
//
// printf("a = %d\n", a);
// printf("a = %d\n", a+=5);//<==> a = a+5;
//
// printf("a = %d\n", a-=10);//<==> a = a-10;
//
// printf("a = %d\n", a*=3);// <==> a = a*3;
//
// printf("a = %d\n", a/=9);// <==> a = a/9;
//
// printf("a = %d\n", a%=3);// <==> a = a%3;
//
// //++a; <==> a=a+1;
// //--a; <==> a=a-1;
//
// //printf("%d %d", a+=2, a-=3);//不合法
//
// printf("%d\n", a=a+b);
// printf("%d\n", c=(a=a+b));
// return 0;
//}
//逗号运算符
//,
//(表达式1,表达式2,表达式3, ... 表达式n)
//表达式的值就是表达式n的值
//int main(int argc,const char *argv[])
//{
// int a=5,b=6,c=7,d=8;
// //printf("%d\n", (a,b,d,c));
// //printf("%d\n",(a+b,b-c,c+d,a*d));
// printf("%d\n",(a=a+b,b=b+c,c=c+d,a));
//
// return 0;
//}
//优先级顺序: 括号 > 单目运算符 > 算术运算符(* / % > + -)>关系运算符 > 逻辑运算符(&& > ||) > 三目运算符 > 赋值运算符 > 逗号运算符
//类型转换
//int main(int argc,const char *argv[])
//{
// int a=10;
// long b = 6789;
// float f=3.99;
//
// printf("%ld\n", a+b);//发生了位扩展 //隐式转换 int --> long
// printf("%f\n",a+f);//int --> float
//
// printf("%d\n",(int)f+a);//显示转换,也叫强制类型转换
//
// return 0;
//}
//char short 向 int 看齐
//int 向 long 看齐
//整型向浮点类型看齐
//单精度向双进度看齐
//只有char 跟 short数据进行运算 向int类型看齐
//有符号向无符号看齐
//int main(int argc,const char *argv[])
//{
// char a=-6;
// short d = 23;
// unsigned int n=78;
//
// int b = 12;
// long c = 40;
// float f1 = 3.14;
// double f2 = 678.423;
// printf("%d\n", a+b);//char --> int
// printf("%ld\n", b+c);// int --> long
// printf("%ld\n", a+c);//char --> long
// printf("%f\n", a+f1);//char --> float
// printf("%f\n", b+f1);//int --> float
// printf("%f\n", c+f1);//long --> float
// printf("%f\n", f1+f2);//float --> double
//
// printf("%d\n", a+d);
// printf("%d\n", a+n);
//
//
// return 0;
//}
//位扩展 : 对于正数,位扩展高位补0, 对于负数,位扩展,高位补1;
//0000 0000 0000 0000 0000 0000 0000 0110 a=6
//0000 0000 0000 0000 0000 0000 0000 1100 b=12
//----------------------------------------------
// 0000 0000 0001 0010
//1111 1111 1111 1111 1111 1111 1111 1010 a=-6
//0000 0000 0000 0000 0000 0000 0000 1100 b=12
//----------------------------------------------
//0000 0000 0000 0000 0000 0000 0000 0110 6
//int main(int argc,const char *argv[])
//{
// char a;
// int b=0x1256;
// float f=311.4567;
// a = b;//位截断 把高位数据丢掉
// printf("a = 0x%x\n", a);
// a = f;
// printf("%d\n", a);
// return 0;
//}
//有符号向无符号看齐
//char a = -5
//unsigned int b=4;
//1111 1111 1111 1111 1111 1111 1111 1011
//0000 0000 0000 0000 0000 0000 0000 0100
//------------------------------------------
//0000 0000 0000 0000 0000 0000 0000 1111 = 1
//int main(int argc,const char *argv[])
//{
// char a=-5;
// unsigned int b=4;
// printf("%d\n", a+b);
// return 0;
//}
//一切设备皆文件
int main(int argc,const char *argv[])
{
int a, b;
scanf("%d %d",&a, &b);//从标准输入文件中读取数据,解析数据到变量中 stdin
printf("a = %d b = %d\n", a, b);//向标准输出文件中写入数据 stdout
return 0;
}
posted on 2014-01-21 18:59 Sinner_Yun 阅读(237) 评论(0) 编辑 收藏 举报