当前位置:网站首页>C primer plus學習筆記 —— 2、常量與格式化IO(輸入/輸出)
C primer plus學習筆記 —— 2、常量與格式化IO(輸入/輸出)
2022-06-23 05:40:00 【Charles Ren】
常量和變量
明示常量
明示常量又叫符號常量,define修飾的字符
#define TAX 0.15
在編譯程序時就會將TAX都替換成0.15。在運行程序前所有的替換已經完成。
作用:提高程序的可讀性和可維護性。
const修飾的變量
const修飾的是變量,但是是只讀的。
他是運行期才分配內存。存儲比特置和常量也不同。
常用常量


轉換的意義
轉換說明把以二進制格式存儲在計算機中的值,轉換成字符串便於顯示。
比如76這個值,他在計算機中就是01001100。
使用%d的意識是“把給定的值翻譯成十進制文本並打印出來”。所以%d將其轉換成字符7和6並顯示為76。
printf 打印類型
printf打印不同類型值所使用的符號,使用錯誤的說明符會打印意想不到的結果。printf("%c %d", '$', 2*a) printf打印的是值,無論變量,常量,還是錶達式。
整型轉換
| 轉換說明 | 輸出 |
|---|---|
| %d | 十進制顯示,可打印int 和short,也可以寫做%i |
| %ld | long |
| %lld | long long int |
| %o | 八進制int |
| %lo | 八進制long |
| %x | 十六進制int |
| %lx | 十六進制long |
| %#o | 八進制加前綴0顯示 |
| %#x | 十六進制加前綴0x顯示 |
| %#X | 十六進制加前綴0X顯示 |
| %u | unsigned int |
| %lu | unsigned long |
| %4d | 最小的字段寬度,如果不够容納待打印的數,則自動擴充 |
| %zd | 或者%zu,錶示size_t類型的值,sizeof()或者strlen()運算返回的結果類型。在早期C用%ul來接收 |
浮點數轉換
| 轉換說明 | 輸出 |
|---|---|
| %f | 浮點數十進制記數法錶示float或double,float會被自動轉為double輸出 |
| %6.2f | 錶明待打印的數⾄少占6個字符寬度,且⼩數點後⾯有2比特⼩數,⼩數點占⼀比特,所以整數部分⾄少占3比特 |
| %.2f | 錶示整數部分正常,小數部分保留2比特他和%0.2f含義相同 |
| %Lf | long double 這個要大寫 |
| %e | 使用e計數法來錶示浮點數 |
| %g | 根據值自動選擇%f或者%e |
打印不同精度的浮點數
https://blog.csdn.net/dodamce/article/details/115297198
其他轉換
| 轉換說明 | 輸出 |
|---|---|
| %c | 單個字符 |
| %s | 字符字符串 |
| %p | 指針的值 |
| %% | 打印一個百分號 |
| \n | 換行 |
| \\ | 斜杠 |
| \’ | 單引號 |
| \" | 雙引號 |
標記

#define PAGES 959
int main(void)
{
printf("*%d*\n", PAGES);
printf("*%2d*\n", PAGES);
printf("*%10d*\n", PAGES);//打印10個字符寬度
printf("*%-10d*\n", PAGES);//左對齊
return 0;
}
//*959*
//*959*
//* 959*
//*959 *
// floats.c -- some floating-point combinations
#include <stdio.h>
int main(void)
{
const double RENT = 3852.99; // const-style constant
printf("*%f*\n", RENT); // 保留6比特小數
printf("*%e*\n", RENT); //e錶示法
printf("*%4.2f*\n", RENT); //4寬度,2比特小數,寬度不够則顯示原數
printf("*%3.1f*\n", RENT);
printf("*%10.3f*\n", RENT); //10寬度,3比特小數
printf("*%-10.3f*\n", RENT); //左對齊
printf("*%10.3E*\n", RENT);
printf("*%+4.2f*\n", RENT); //顯示符號
printf("*%010.2f*\n", RENT); //用0填充不够的比特
return 0;
}
// *3852.990000*
// *3.852990e+03*
// *3852.99*
// *3853.0*
// * 3852.990*
// *3852.990 *
// * 3.853E+03*
// *+3852.99*
// *0003852.99*
打印字符串
打印較長字符串換行有三種方法,
- 使用多個printf語句。
- 使用反斜杠,但是第二行必須左對其,不然就會有空格
- (推薦)使用雙引號鏈接符
int main(void)
{
printf("Here's one way to print a ");
printf("long string.\n");
printf("Here's another way to print a \ long string.\n");
printf("Here's the newest way to print a "
"long string.\n"); /* ANSI C */
return 0;
}
scanf函數
C語言庫有多個輸入函數,但是scanf是最通用的一個,因為他可以讀取不同格式的數據。
scanf和printf使用方式基本一樣,但是注意一點。scanf函數使用的是指向變量的指針。
也就是使用的時候注意兩個技巧:
- scanf讀取基本變量類型的值在變量名前面一個&
- 把字符串讀入字符數組,變量名前不用&
scanf函數使用空白(換行符,制錶符和空格)把輸入分成多個字段。也就是用空白作為分隔符。
scanf所使用的轉換說明與printf相同,見上面錶格。唯一一點不同,scanf會將所有輸入的浮點數類型都應用到float類型上。
舉例
scanf讀取一個%d,也就是讀取一個整數:
- 他會跳過輸入的空白字符,從第一個非空白字符開始讀取
- 然後讀取數字字符,直到遇到非數字字符,他便認為讀到了整數的末尾。
- 然後將該數字放入到變量。
如果使用%s轉換說明,scanf會讀取空白以外的所有字符。
- 他會跳過輸入的空白字符,從第一個非空白字符開始讀取
- 依次讀取字符直到再遇到空白,停止。
其他輸入函數
我們看到如果我要讀取帶空格的字符串使用scanf就無法讀取了。
使用getchar()和fgets()更適合處理一些字符串的特殊情况。後面會再講。
只是scanf是一種更通用的輸入方式。
格式輸入
scanf("%d,%d:, &n, &m);
則輸入必須以下形式
55,45
scanf("%d %d:, &n, &m);
則輸入必須是一下形式
55 45
边栏推荐
- fastjson中的@JSONField注解
- 1010 Radix
- WebRTC[47] - WebRTC 保存 YUV 数据的常用方式
- Qimen dunjia assistant decision software
- What does the English letter PC mean? What does the Internet PC mean
- Wechat applet: unfashionable love talk
- Low cost 5W wireless charger scheme fs68001b simple charging chip
- H5 适配全面屏
- MySQL面试真题(二十八)——案例-通讯运营商指标分析
- fastjson中的@JSONField注解
猜你喜欢

What if win11 cannot record audio? Solution of win11 unable to input sound

英文字母pc是什么意思,互联网的pc指的是什么

sprintf 格式代码使用不规范在不同平台下的表现

MCS: continuous random variable lognormal distribution

Is there a real part-time job online? How do college students find part-time jobs in summer?

MySQL面试真题(二十七)——RFM分析法对用户进行分类

人脸识别 确定阈值

Wechat applet: wechat can also send flash photos to create wechat applet source code download and customize flash time

数据库连接异常:create connection error, url: jdbc:mysql://ip/数据库名, errorCode 0, state 08S01问题处理

Wechat applet: Star Trek spaceship ticket production and generation
随机推荐
Win11应用商店一直转圈解决办法
STM32 clock tree misconfiguration causes boot to enter hard interrupt
What does the English letter PC mean? What does the Internet PC mean
MCS:离散随机变量
Is there a real part-time job online? How do college students find part-time jobs in summer?
The road of architects starts from "storage selection"
1010 Radix
Software project management 8.4 Software project quality plan
hash---------history
Introduction to JDBC (III) implementation of transaction rollback function
Database connection exception: create connection error, url: jdbc: mysql://ip/ Database name, errorcode 0, state 08s01 problem handling
MDM数据清洗功能开发说明
Cloud native database is the world of future databases
Face recognition determination threshold
Leetcode 797: all possible paths
Wechat applet: elderly blessing short video
Yingjixin launched 4 series of lithium batteries 100W mobile power supply voltage rise and fall scheme SOC chip ip5389
MySQL面试真题(二十七)——RFM分析法对用户进行分类
GO语言-panic和recover
今日睡眠质量记录80分