目录
2.*的用法
3.运算符优先级
4.重定向输入与输出
5输入验证
#示例
float n1 = 3.0;
double n2 = 3.0;
long n3 = 200000000;
long n4 = 1234567890;
printf("%ld %ld %ld %ld",n1,n2,n3,n4);
输出结果:0 1047266112 0 1047266112
图形表示出入栈方式
1.printf中的*
int a = 6; //字长
int b = 123; //数字
printf("number = %*d",a,b);
/*输出:number = 123*/
printf中可以用的*修饰符代表字段宽度,特别的是如果字长a小于b数字的长度计算机会自动补足长度。例如a = 2,b = 123;输出结果依然是123;
2.scanf中的*
int n;
scanf("%*d %*d %d",&n);
printf("%d",n);
/*例如
输入:1 2 3
输出:3
*/
可以跳过特定读取,在需要程序读取文件中特定列时十分有用;
-优先级 | -运算符 | -含义 | -方向 |
---|---|---|---|
1 | () | —— | 从左到右 |
1 | [] | 数组 | 从左到右 |
1 | -> | 指针->对象名 | 从左到右 |
1 | . | 对象.成员名 | 从左到右 |
-优先级 | -运算符 | -含义 | -方向 |
---|---|---|---|
2(单目) | - + | 正负号 | 从右到左 |
2 | ~ ! | 按位取反 逻辑非 | 从右到左 |
2 | ++ – | 自加,自减 | 从右到左 |
2 | * & | 指针变量 取地址 | 从右到左 |
-优先级 | -运算符 | -含义 | -方向 |
---|---|---|---|
3 | / | 除 | 从左到右 |
3 | * | 乘 | 从左到右 |
3 | % | 取模(取余) | 从左到右 |
4 | + - | 加减运算 | 从左到右 |
5 | << >> | 左移 右移 | 从左到右 |
-优先级 | -运算符 | -含义 | -方向 |
---|---|---|---|
6 | > < | 大于 小于 | 从左到右 |
6 | >= <= | 大于等于 小于等于 | 从左到右 |
7 | == != | 等于 不等于 | 从左到右 |
-优先级 | -运算符 | -含义 | -方向 |
---|---|---|---|
8 | & | 按位与 | 从左到右 |
9 | ^ | 按位异或 | 从左到右 |
10 | | | 按位或 | 从左到右 |
11 | && | 逻辑与 | 从左到右 |
12 | || | 逻辑或 | 从左到右 |
13(三目运算符) | ? : | 表达式1?表达式2:表达式3; | 从右到左 |
14 | = | 赋值 | 从左到右 |
15 | , | 逗号运算符 | 从左到右 |
重定向输出与输入就是用文本的方式代替屏幕或键盘
重定向输入:<
重定向输出:>
orient.c
#include <stdio.h>
int main()
{
char ch;
while((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
#重定向输出
例如以下程序,运行得到一个exe文件,在创建一个与exe文件相同路径的txt文件,在txt文件中输入 “xianyoudian” 并保持。
然后我们打开cmd窗口,输入exe文件路径>txt文件路径
F:\ > orient.exe<xi.txt
“xianyoudian”
这样会直接在orient.exe中输入xi.txt文本中的内容。同理如果使用定向重定向输出则会将在orient.exe文件输入的内容保存在xi.txt文件中。
输入验证——有效避免用户输入非法数据
- 使用scanf()的返回值判断 (注意清空缓存区的数据)
#include <stdio.h>
int main()
{
int ch;
int a,k;
do{
while(scanf("%d",&a) == 1)
{
printf("a = %d\n",a);
break;
}
ch = getchar(); //清空缓存区非法符号
}while(ch != '\n');
}
/*
输出:gyufv6787f76c756fcv67
输出:a = 6787
a = 76
a = 756
a = 67
*/
- 利用函数跳过一些换行符