运算符、表达式
1.取整取余
#include <stdio.h>
int main()
{
int a = 1234;
printf("%d\n", a / 1000);
printf("%d\n", a % 1000 / 100);
printf("%d\n", a % 100 / 10);
printf("%d\n", a % 10);
return 0;
}
2.条件运算符
a > b ? a : b
#include <stdio.h>
int main()
{
int a = 1, b = 2;
int c;
c = (a > b) ? a : b; //三目运算符
printf("%d\n", c);
return 0;
}
3.运算符优先级
函数符号()、数组下标[ ] > 单目运算符>算数运算符>移位运算符>关系运算符>逻辑运算符>三目运算符
4.a++和++a的区别
a ++:等价于a = a + 1,不等价于a + 1
++ a:执行a所在语句之前,a加1
a ++:执行a所在语句之后,a加1
(1).
#include <stdio.h>
int main()
{
int a = 1;
//a++; //等价于 a = a + 1; 不等价于 a + 1
printf("%d\n", ++a); //执行a所在语句之前,a加1
printf("%d\n", a++); //执行a所在语句之后,a加1
printf("%d\n", a);
return 0;
}
(2).
#include <stdio.h>
int main()
{
int a = 4 ;
a += a ++;
printf("%d\n",a); //a=9
a=4;
a += ++ a;
printf("%d\n",a); //a=10
a=4;
++ a += a;
printf("%d\n",a); //a=10
a=4;
++ a += a ++;
printf("%d\n",a); //a=11
a = 4;
++ a += ++ a;
printf("%d\n",a); //a=12
}
5.换行符号的运用(printf中加’\n’和不加’\n’的区别)
(1).加’\n’
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 5; i++)
{
printf("helloworld!\n"); //'\n'两个作用:1、换行 2、刷新缓冲区
sleep(1); //延时1s
}
return 0;
}
(2).不加’\n’
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 5; i++)
{
printf("helloworld!"); //'\n'两个作用:1、换行 2、刷新缓冲区
fflush(stdout); //手动刷新缓冲区
sleep(1); //延时1s
}
return 0;
}
6.printf()和scanf()的使用
%d:有符号整型
%u:无符号整型
%o:八进制输出
%x:十六进制输出
%f:输出float型
%c:输出字符型
%s:输出字符串
%p:输出地址
(1).printf() 的使用
#include <stdio.h>
int main()
{
int a = 100;
float b = 1.111111;
char ch = 'a';
char *ptr = "helleworld";
printf("%d\n", a); //整型输出
printf("%u\n", a); //无符号输出
printf("%o\n", a); //八进制输出
printf("%x\n", a); //十六进制输出
printf("%f\n", b); //输出float类型数据
printf("%c\n", ch); //输出字符
printf("%s\n", ptr); //输出字符串
printf("%p\n", &a); //输出地址
printf("%10d\n", a); //a的长度为10(左对称)
printf("%-10d\n", a); //a的长度为10(右对称)
printf("%6.3f\n", b); //b的长度为6,保留3位小数
printf("%3.5f\n", b); //保留5位小数
return 0;
}
(2).scanf()的使用
int a = 1;
char ch = 'a';
char *str ;
scanf("%d",&a);
scanf("%c",&ch);
7.位操作
例:输入一个字符,判断出这个字符的二进制码中有多少个1。
#include <stdio.h>
int main()
{
char ch;
int i,count=0;
scanf("%c",&ch);
for(i=0;i<8;i++)
{
if(ch & 1 == 1) count++;
ch=ch>>1;
}
printf("%d",count);
}