首页 > 代码库 > iOS-C_Day3___运算符与表达式

iOS-C_Day3___运算符与表达式

2015.1.21

//常量: 是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;

}

 

iOS-C_Day3___运算符与表达式