【C语言】的小细节

目录

1.不同转换符号入栈的方式

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
*/
  • 利用函数跳过一些换行符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼小小虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值