C/C++ 格式說明符及其用法
在 C/C++ 中,格式說明符(Format Specifiers)主要用于 printf()、scanf() 等輸入輸出函數(shù)中,用于控制數(shù)據(jù)的格式化輸入和輸出。以下是常見的格式說明符及其用法:
一、基礎格式說明符
| 說明符 | 適用數(shù)據(jù)類型 | 描述 |
|---|---|---|
%d | int | 十進制整數(shù)(帶符號) |
%u | unsigned int | 十進制無符號整數(shù) |
%f | float | 浮點數(shù)(默認保留6位小數(shù)) |
%lf | double | 雙精度浮點數(shù)(printf中可用%f代替,但scanf必須用%lf) |
%c | char | 單個字符 |
%s | char* (C 字符串) | 字符串(需以 \0 結(jié)尾) |
%p | void* | 指針地址(十六進制格式,如 0x7ffeeb0b4d60) |
%x | int, unsigned int | 十六進制整數(shù)(小寫字母,如 1a3f) |
%X | 同上 | 十六進制整數(shù)(大寫字母,如 1A3F) |
%o | 同上 | 八進制整數(shù) |
%e | float, double | 科學計數(shù)法(小寫 e,如 3.141593e+00) |
%E | 同上 | 科學計數(shù)法(大寫 E,如 3.141593E+00) |
%g/%G | 同上 | 自動選擇 %f 或 %e(根據(jù)數(shù)值大小決定更緊湊的格式) |
%% | - | 輸出百分號 % |
二、修飾符(用于精細控制格式)
1. 寬度與對齊
printf("%10d", 123); // 輸出寬度為10,右對齊:" 123"
printf("%-10d", 123); // 輸出寬度為10,左對齊:"123 "2. 精度控制
printf("%.2f", 3.14159); // 保留2位小數(shù):3.14
printf("%.5s", "hello world"); // 截取前5個字符:"hello"3. 填充字符
printf("%05d", 42); // 用0填充寬度5:"00042"4. 長度修飾符
| 修飾符 | 示例 | 描述 |
|---|---|---|
h | %hd, %hu | short int / unsigned short |
l | %ld, %lu | long int / unsigned long |
ll | %lld, %llu | long long int / unsigned long long |
L | %Lf, %Le | long double |
三、scanf() 的格式說明符
scanf() 中必須嚴格匹配數(shù)據(jù)類型:
int num;
scanf("%d", &num); // 輸入整數(shù)
double value;
scanf("%lf", &value); // 輸入雙精度浮點數(shù)(必須用%lf)跳過輸入:
scanf("%d %*s %f", &age, &salary); // 跳過中間的字符串輸入四、代碼示例
#include <stdio.h>
int main() {
int num = 42;
float pi = 3.14159;
char str[] = "Hello";
printf("十進制: %d, 十六進制: 0x%x\n", num, num);
printf("浮點數(shù): %.2f, 科學計數(shù)法: %e\n", pi, pi);
printf("字符串: %s, 地址: %p\n", str, (void*)&num);
printf("填充示例: %05d\n", num);
return 0;
}輸出:
十進制: 42, 十六進制: 0x2a
浮點數(shù): 3.14, 科學計數(shù)法: 3.141590e+00
字符串: Hello, 地址: 0x7ffd5a3d4a4c
填充示例: 00042
五、注意事項
- 類型匹配:格式說明符必須與變量類型嚴格匹配,否則可能導致未定義行為。
- 錯誤示例:
printf("%d", 3.14);// 錯誤!應用%f。
- 錯誤示例:
- 指針與地址:
%p需要將指針強制轉(zhuǎn)換為void*。 - 字符串安全:
scanf("%s", str)可能導致緩沖區(qū)溢出,建議用%Ns(如%10s)限制輸入長度。
到此這篇關于C/C++ 格式說明符的文章就介紹到這了,更多相關C++ 格式說明符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Matlab實現(xiàn)繪制高階版本韋恩圖(upset圖)
韋恩圖隨著階數(shù)升高會越來越復雜,當階數(shù)達到7或者以上時幾乎沒辦法繪制,但是使用upset圖卻可以比較輕易的繪制。本文就來用Matlab實現(xiàn)繪制upset圖,需要的可以參考一下2023-01-01
C++實現(xiàn)修改函數(shù)代碼HOOK的封裝方法
這篇文章主要介紹了C++實現(xiàn)修改函數(shù)代碼HOOK的封裝方法,有助于深入了解C++的HOOK原理,需要的朋友可以參考下2014-10-10
c++中將二維數(shù)組元素變換為逆向存放的實現(xiàn)代碼
編程將一個二維數(shù)組元素變換為逆向存放,即按元素在內(nèi)存中的物理排列位置,第一個元素變成倒數(shù)第一個元素,第二個元素變成倒數(shù)第二個元素,依此類推2020-11-11
C++實現(xiàn)選擇排序(selectionSort)
這篇文章主要為大家詳細介紹了C++實現(xiàn)選擇排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04

