您的位置:首页 > 运维架构 > Linux

C语言基础(linux)

2015-06-12 00:09 387 查看
一 输入和输出

1.整数 [%d]

<1>输入整数

int data;

scanf("%d",data);//错误

scanf("%d",地址值);

scanf("%d",&data);

注意: 在C源中获取变量的地址 : &变量名

int data1,data2;

scanf("%d",&data1);

scanf("%d",&data2);或

scanf("%d%d",&data1,&data2);

例如:

100200回车键 => 错误

=======================================

100 200回车键 => 正确



100回车

200回车

<2>输出整数

printf("用户的内容%d\n",变量名);

printf("The data is %d\n",data); "\n:输出结束后,换行"

printf("The data is d% /n",data);//错误

printf("The data is %d \n",&data);//错误

printf("The data is %d %d\n",data1,data2);

练习:

int a,b,c;给三个变量输入值 100 200 300

最后输出a,b,c的值,输出的格式=> a:100 b:200 c:300

2.浮点数 [%f]

float a;

scanf("%f",&a);

printf("a = %f",a);

printf("a = %.1f",a);//精确到小数点后面1bit

printf("a = %.2f",a);//精确到小数点后面2bit

注意:输入的时候,空格或回车符作为分格符号

练习:

float a,b,c;

输入的值:0.5 0.3 1.4

输出的格式:a = 0.5,b = 0.3,c = 1.4

3.字符[8bit] [%c]

=================================================================================

C语言中的数据:整数 ,小数,字符,字符串

字符: '字母' a(不是字符) 'a'(字符)

注意:

字符实际在内存中存储的时候,是以ASCII碼(整数)

(对字符的编码[0-255]: 0-127 标准的ASCII碼 128-255:IBM公司扩展)的形式存储

Linux 通过man ascii 查看ASCII碼表

需要记住:

'\0'->0 'a'->97 'A'->65 '0':48

'A' + 32 ---> 'a' 'a'- 32-->'A'

'0' - ('0')[48] --> 0 '1' - '0'[48] ---> 1

================================================================================

<1>输入

scanf("%c",&a);

scanf("%c%c",&a,&b);

注意:此时连续读入字符(空格和回车符不作为输入的分割符);

<2>输出

printf("a = %c\n",a);

练习:

char a,b,c,d;

输出的结果a=3 b=a c=4 d=f

练习:

输入整数 200 250 300 给变量 a b c,然后输出

输入字符 '3' '5' 'f' 给变量 d e f,然后输出

输入小数 1.34 5.67 8.12 给变量h i j,然后输出

二 C语言运算符

1.自增加[++] ,自减少[--];

int a = 100;

a --; //a = a - 1

a ++; //a = a + 1

注意:

如果自增加/减少 前置的时候,先操作,然后拿值

如果自增加/减少 后置的时候,先拿值,然后操作

b = a --; // b = a, a = a -1

b = --a; // a = a - 1,b = a

练习:

给变量a,b,c输入值100,200,300

然后让a自增加1,赋值给c ,让 b 的值赋值给c,然后自减1 ,最后输出a,b,c的值

2.算术运算符

加 + ,减 - ,乘 * ,除 / , 求余 %

注意:

<1> “/” 如果计算的两个数是整数,则为整除 10 / 3 = 3 , 3 / 10 = 0

<2> "%" 要求计算的两个数必须是整数 10 % 3 = 1 , 3 % 10 = 3

练习:

输入两个数,将计算结果输出

3.关系运算符

大于 > , 小于 < ,大于等于 >= ,小于等于 <= ,等于 == ,不等于 !=

注意:

<1>关系运算符运算的结果 : 0[关系不成立] 1[关系成立]

<2>在C语言中非0即为真

4.逻辑运算符

逻辑与 && (且的关系) ,逻辑或 || (或的关系) , 逻辑非 !(假->真,真->假)

注意:

<1>&& 它的两个表达式的值,只要有一个为假,则运算结果为假 (一假必假)特点[短路]:当第一个表达式计算结果为假的时候,第二个表达式将不会计算

<2>|| 它的两个表达式的值,只要有一个运算结果为真,则最终运算的结果为真(一真必真)特点[短路]:当第一个表达式计算结果为真的时候,第二个表达式将不会计算

练习:

int a = 'a', b = 'b';将a和b的值做减法,结果赋值给a,a = a - b; //a = -1,b = 98

value = a ++ && b --;

printf("value = %d ,a = %d,b = %d\n",value,a,b);/value = 1,a = 0,b = 97

value = a || b ++;

printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 98

value = (a > b) || (a <= b);

printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 98

value = !a && !b;

printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 0,a = 0,b = 98

5.位运算符

按位与 & , 按位 |, 按位异或 ^,按位反 ~ , 左移 << , 右移 >>

10101

& 01010

--------------------- 有0则为0

00000

10101

| 01010

-------------------- 有1则为1

11111

10101

~

------------------- 0变1,1变0

01010

10101

^ 00110

-------------------- 相同为0,不同为1

10011

<1>思考:如何判断两个数是否相等(不用关系运算符)?

用 "^",如果两个数相等,异或的结果必定是0,否则不为1

10101

^ 10101

--------------

00000

<2>思考:有个data值,我想将它的[0-3]bit变成1010,其它位不变?

data = data & ~0xf

data = data | 0xa

例如:

data = 45;

1 1 1 0 1

~0xf

1 0 0 0 0

&

-----------------------------

1 0 0 0 0

0xa

0 1 0 1 0

|

--------------------------------

1 1 0 1 0

//1 1 1 1 1 1 1

练习:把这个data值[0-6]位变成0100100,其它位不变

data = data & ~0x7f;

data = data | 0x24

===============================================================

逻辑移位[无符号类型变量]:

左移的时候,右边补0

右移的时候,左边补0

算术移位[有符号类型变量]:

正数

左移的时候,右边补0

右移的时候,左边补0

负数

左移的时候,右边补0

右移的时候,左边补1

===============================================================

练习:

char c;

unsigned char a = 0xfd;

char b = 0xfd;

c = a << 3;

c = a >> 3;

c = b >> 3;

c = b << 3;

6.赋值运算符号

= , += , -= ,*= ,/= , %=

a += 3 ;// a = a + 3

a *= 3 ;// a = a * 3

7.三目运算符

表达式1 ? 表达式2 : 表达式3;

结果:如果表达式1的值为真,则计算结果为表达式2计算的结果,否则为表达式3计算的结果

练习:

1.输入一个数,将这个数[0-3]位变成0101 ,[5-6]变成 00,其它位不变

2.输入两个数,将这两个数的值交换 [思考:如何不引入第三个变量,完成交换]

a = 3

b = 4

3.输入三个数,将三个数,从小到大,排列,然后输出 [不允许使用if语句]

a = 3;

b = 2;

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