您的位置:首页 > 编程语言 > C语言/C++

C语言运算符(4.22)

2015-05-01 18:25 106 查看
一 输入和输出

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

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int a = 100,b = 200,c = 300;

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

printf("b = %x\n",b);

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

printf("-------------------------------\n");

printf("b = %#x\n",b);

printf("c = %#o\n",c);

return 0;

}

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

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

float a,b,c;

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

printf("a = %.1f,b = %.2f ,c = %.3f\n",a,b,c);

return 0;

}

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,然后输出

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int a,b,c;

char d,e,f;

float h,i,j;

char x;

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

//读取'\n'

scanf("%c",&x);

scanf("%c%c%c",&d,&e,&f);

scanf("%f%f%f",&h,&i,&j);

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

printf("d = %c,e = %c,f = %c\n",d,e,f);

printf("h = %.2f,i = %.2f,j = %.2f\n",h,i,j);

return 0;

}

二 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

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

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int data;

int c = 20;

int b = 7;

data = c + b;

printf("data = %d\n",data);

data = c - b;

printf("data = %d\n",data);

data = c * b;

printf("data = %d\n",data);

data = c / b;

printf("data = %d\n",data);//2

data = c % b;

printf("data = %d\n",data);//6

return 0;

}

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

点击(此处)折叠或打开

#include <stdio.h>

int main(int argc, const char *argv[])

{

int value;

int a = 'c';

int b = 100;

value = a++;

printf("value = %d\n",value);//99

value = ++b;

printf("value = %d\n",value);//101

////a = 100,b = 101

value = a > b;

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

value = a <= b;

printf("value = %d\n",value);//1

value = a != b;

printf("value = %d\n",value);//1

value = a == b;

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

return 0;

}

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,其它位不变

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int data;

printf("Input a data : ");

scanf("%d",&data);

data = data & ~0xf;

data = data | 0x5;

//data = data & ~0x60

data = data & ~(0x3 << 5);

printf("data = %#x\n",data);

return 0;

}

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

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

a = 3;
b = 2;
c = 5;
=>
a = 2;
b = 3;
c = 5;

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int x;

int t;

int a,b,c;

//20 10 30

printf("Input data : ");

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

x = a < b ? a : (t = a, a = b, b = t);

printf("x = %d\n",x);

a < c ? a : (t = a, a = c, c = t);

b < c ? b : (t = b, b = c, c = t);

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

return 0;

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