您的位置:首页 > 职场人生

黑马程序员-03.C 语言中基础知识点的总结

2014-09-09 16:41 573 查看
                           ------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------

1.C语言中的变量

1)变量的定义

变量类型 变量名;
int score;
只要有不确定的数据,就应该定义变量来保存
2)变量的赋值(也叫做变量的初始化)
score = 100;
score = a;
score = b = 100;
3)变量的输出
 int a = 200;
 printf("%i", a);
4)常用格式符(占位符):
1> %d\%i 整数(int)
2> %f  小数,默认是6位小数(float、double)
3> %c  字符(char)
5)变量的作用域(作用范围)
 从定义变量的那一行代码开始,一直到所在的代码块结束。
6)代码块的作用
 及时回收不再使用的变量,为了提升性能

7)交换变量的值的三种方法

(1).利用第三方变量 
 int temp = a;
 a = b;
 b = temp;(使用temp中间变量)
(2).不利用第三方变量 
 a = b - a;
 b = b - a;
 a = b + a;
(3).利用运算符
 a = a ^ b;
 b = a ^ b;
 a = a^ b;
8)变量的内存分析

1>内存寻址由大到小,优先分配内存地址比较大的字节给变量
2>变量越先定义,内存地址就越大
3>取得变量的地址:&变量名

 printf("a的地址是:%p\n", &a);
4>输出地址符:%p

 printf("b的地址是:%p\n", &b);
5>变量一定要先进性初始化才可以使用

2.scanf函数的基本使用

scanf函数只接受变量的地址
scanf函数是一个阻塞式的函数,等待用户输入
用户输入完毕后,就会将用户输入的值赋值给number变量
scanf("%d", &number);
Scanf的注意的几点
1>输入字符

char c;
scanf("%c", &c);
printf("输入的字符是%c\n", c);
2>一次性输入多个数值,并且以某些符号隔开

int num1, num2;
scanf("%d#%d", &num1, &num2);
printf("num1=%d, num2=%d\n", num1, num2);


3>如果scanf参数中以空格隔开,实际输入可以以空格、tab、回车作为分隔符
 
int num1, num2;
scanf("%d %d", &num1, &num2);
printf("num1=%d, num2=%d\n", num1, num2);


4>scanf中不能写\n
int a;
scanf("%d\n", &a); // 错误写法
printf("a的值是%d\n", a);

3.算数运算符

1)算数运算符的基本使用
    int a = 10 + 1 + 2 - 3 + 5;
    int b = -10;
    int c = 10 * b;
    int d = 10 / 2;
 2)取余运算(模运算)
    %两边都是整数
    %取余结果的正负性只跟%左边的数值有关
    int e = 10 % -3;
    printf("%d\n", e);
3)自动类型转换(double->int)
    int a = 10.8;
4)强制类型转换(double->int)
    int b = (int) 10.5;
    printf("%d\n", a);
5) 自动类型提升(int->double)
6)赋值运算符

复合赋值运算符
    a += 5; // a = a + 5;
    
    a *= 5; // a = a * 5;
    
    a += 5 + 6 + 4; // a = a + (5 + 6 + 4);
7)举例说明自增和自减运算符

 
#include
int main(int argc,const char * argv[])
{
int b;
int a = 5;
b = (++a) + (a++);

printf("b=%d, a=%d\n", b, a);
return 0;
}


 
 本体打印的结果是 b=12 a=7
 1.程序首先从main函数开始,声明二个int型的变量a和b,在内存中各分配4个字节给a和b,并且把b的值初始化为5.
 2.无论是++a或者是a++都是把a的值分别加1所以a的值是7.
 3.++a是在没有进行任何运算之前加1,经过++a以后,现在a的值是6,此时的运算表达式相当于“b=6+(a++)”.
 4.a++是让参加运算以后再加1所以此时的运算表达式是“b=6+6=12”
 5.然后a再加1现在a的结果是7

4.sizeof

不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理

  sizeof有两种用法:

  

1)sizeof(object)

    也就是对对象使用sizeof,也可以写成sizeof object 的形式

   int size = sizeof(10);
   int size = sizeof 10.9;
   int a = 10;
   int size = sizeof(a);
   int size = sizeof a;
2)sizeof(typename)

    也就是对类型使用sizeof 

    int size = sizeof(char);
    int size = sizeof char;  错误的

5.关系运算

C语言规定,任何数值都有真假性,任何非0值都为“真”,只有0才为“假”。

关系运算优先级

1) C语言关系运算符==、!=的优先级相等,>、<、>=、<=的优先级相等,且前者的优先级低于后者的优先级

2) 关系运算符优先级相同时,运算顺序“从左至右”

3) 关系运算符的优先级低于算术运算符

6.逻辑运算

C语言规定:任何非0值都为“真”,只有0才为“假”,因此逻辑运算也适用于数值。

1) 逻辑运算符与: && 

条件A&& 条件B  条件全部成立才为真!当左边条件为假时,右边条件不再运算。

逻辑与的结合方向是“自左至右”

2) 逻辑运算符或: ||  

条件A || 条件B  其中一个条件成立或全部成立为真!条件都不成立才为假。当左边条件为假时,右边条件不再运算。

逻辑与的结合方向是“自左至右”

3) 逻辑非: !

 !条件A    对条件A逻辑取反,条件成立即假,条件不成立即真。

逻辑非的结合方向是“自右至左”

逻辑运算 ! 可以多次连续使用。

4) 逻辑运算符的优先级顺序为: 小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > && > ||

5)三目运算

条件?值1:值2;   如果条件成立,返回值1;不成立返回值2,三目运算一定有返回值 

C语言规定:任何非0值都为“真”,只有0才为“假”,因此逻辑运算也适用于数值。

 

#include
int main()
{
/* 计算2个整数之间的最大值
int a = 10;
int b = 99;
int c = a>b ? a : b;
printf("c is %d\n", c);
*/
// 计算3个整数之间的最大值
int a = 10;
int b = 999999;
int c = 1000;

// 求出a、b的最大值
int abMax = (a > b) ? a : b;
// 求出最终的最大值
int d = (abMax > c) ? abMax : c;

//int d = (((a > b) ? a : b) > c) ? ((a > b) ? a : b) : c;
printf("d is %d\n", d);
return 0;
}


                      ------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: