c语言中以16进制输出时%0x和%x有什么区别? C语言中16进制数0x10和0xa的区别是什么?

C\u8bed\u8a00\u4e2d\u4ee516\u8fdb\u5236\u8f93\u51fa\u65f6%0x\u548c%x\u6709\u4ec0\u4e48\u533a\u522b?

\u6807\u51c6C\u8bed\u8a00\u5e93\u51fd\u6570fprintf/printf\u683c\u5f0f\u5b57\u7b26\u4e32\u7684\u8f6c\u6362\u8bf4\u660e\u5f62\u5f0f\u662f\u8fd9\u6837\u7684\uff1a

%[\u6807\u5fd7][\u6700\u5c0f\u8f93\u51fa\u5bbd\u5ea6][.\u7cbe\u5ea6][\u957f\u5ea6\u4fee\u6b63\u7b26]\u7c7b\u578b
\u65b9\u62ec\u53f7\u62ec\u8d77\u6765\u662f\u53ef\u9009\u9879\u3002

\u6807\u5fd7\u662f0\u6216\u591a\u4e2a\u6807\u5fd7\u5b57\u7b26\uff0c\u53ef\u4ee5\u662f\u4efb\u610f\u987a\u5e8f\uff0c\u5e38\u7528\u6709\u4ee5\u4e0b\u51e0\u4e2a\uff1a
- \u5de6\u5bf9\u9f50\uff0c\u7f3a\u7701\u662f\u53f3\u5bf9\u9f50\u3002
+ \u5e26\u7b26\u53f7\u7684\u503c\u524d\u9762\u603b\u662f\u6709\u4e2a\u7b26\u53f7\uff0c\u4e5f\u5c31\u662f\u6b63\u6570\u524d\u9762\u6709+\u53f7\uff0c\u8d1f\u6570\u524d\u9762\u6709-\u53f7\u3002
0 \u8f93\u51fa\u503c\u7684\u5bbd\u5ea6\u5c0f\u4e8e\u6700\u5c0f\u5bbd\u5ea6\u7684\u8bdd\uff0c\u75280\u586b\u5145\uff0c\u7f3a\u7701\u662f\u7528\u7a7a\u683c\u586b\u5145\u3002

0\u662f\u4e00\u4e2a\u6807\u5fd7\u5b57\u7b26\uff0c\u610f\u601d\u5c31\u662f\u75280\u586b\u5145

\u6211\u95e8\u901a\u5e38\u7528\u7684\u662f\u5341\u8fdb\u5236\uff0c\u4e5f\u5c31\u662f\u9022\u5341\u8fdb1\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u7528
0,1,2,3,4,5,6,7,8,9\u8868\u793a\u4e2a\u4f4d,\u5f53\u5230\u5341\u7684\u65f6\u5019\u5c31\u8fdb\u4e86\u4e00\u4f4d\uff0c\u53d8\u6210\u4e86\u4e24\u4f4d10

\u540c\u7406\uff0c\u516b\u8fdb\u5236\u662f\u9022\u516b\u8fdb1\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u7528
0,1,2,3,4,5,6,7\u8868\u793a\u4e2a\u4f4d\uff0c\u5f53\u5230\u516b\u7684\u65f6\u5019\u53d8\u6210\u4e86\u4e24\u4f4d10,\u6211\u4eec\u5728\u516b\u8fdb\u5236\u657010\u524d\u9762\u52a0\u4e0a0,\u516b\u8fdb\u5236\u657010\u5c31\u53d8\u6210\u4e86010\u4e86\uff0c010\u8868\u793a8\uff0c015\u8868\u793a1*8+5=13\uff0c\u90a3\u4e48\u6211\u95e8\u518d\u770b\u4e00\u4e2a\u6570046\u8868\u793a\u591a\u5c11\u5462\uff1f\u8868\u793a4*8+6=42

\u540c\u7406\uff0c\u5341\u516d\u8fdb\u5236\u662f\u9022\u5341\u516d\u8fdb1\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u7528
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f\u8868\u793a\u4e2a\u4f4d\uff0c\u5176\u4e2da,b,c,d,e,f\u5206\u522b\u8868\u793a\u5341\u8fdb\u5236\u4e2d\u768410,11,12,13,14,15\uff0c\u5728\u5341\u516d\u8fdb\u5236\u5c0f\u4e8e\u5341\u516d\u7684\u90fd\u662f\u7528\u4e00\u4f4d\u6765\u8868\u793a\uff0c\u5f53\u6570\u7b49\u4e8e16\u7684\u65f6\u5019\u5c31\u8981\u8fdb\u4f4d\u4e86\uff0c\u53d8\u6210\u4e8610\uff0c\u6211\u4eec\u4e3a\u4e86\u548c\u5341\u8fdb\u5236\u533a\u522b\uff0c\u572810\u524d\u9762\u52a00x10,\u8868\u793a\u8fd9\u4e2a\u6570\u662f\u752816\u8fdb\u5236\u8868\u793a\u7684\uff0c\u90a3\u4e480x10\u7531\u4e8e\u662f\u902216\u8fdb\u4e00\uff0c\u6240\u4ee50x10\u8868\u793a\u7684\u4e0d\u662f10\uff0c\u800c\u662f16\uff0c\u6240\u4ee50x2a=2*16+a=2*16+10=42

%0x和%x都是以十六进制格式右对齐输出,输出的是无符号数。

    在不指定占宽情况下以数据的实际宽度输出,而系统又自动消除左端的无效0,所以%0x和%x在显示效果上没有什么不同。

    在指定占宽的情况下,在指定的输出占宽范围内,实际数据宽度不足时用%0x作控制的前面用0补齐,而用%x作控制的前面用空格补齐。如:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    int a=0x37;
    printf("%04X
%4X
",a,a);
    return 0;
}

输出是:

0037

    37

若实际数据宽度大于指定宽度,则按实际宽度输出。





标准C语言库函数fprintf/printf格式字符串的转换说明形式是这样的:

%[标志][最小输出宽度][.精度][长度修正符]类型
方括号括起来是可选项。

标志是0或多个标志字符,可以是任意顺序,常用有以下几个:
- 左对齐,缺省是右对齐。
+ 带符号的值前面总是有个符号,也就是正数前面有+号,负数前面有-号。
0 输出值的宽度小于最小宽度的话,用0填充,缺省是用空格填充。

0是一个标志字符,意思就是用0填充

char x=5;

printf("%x\n",x);得到输出5
printf("%0x\n",x);得到输出05

你编程试试不就知道了吗。

  • c璇█涓崄鍏繘鍒鍜屽叓杩涘埗鐨勬牸寮
    绛旓細16杩涘埗浠0x寮澶达紝鍚庨潰璺熸暟瀛0~9鎴栧瓧姣岮~F锛堝皬鍐欎篃鍙互锛夈傚锛0x2D锛16杩涘埗鏁2D锛8杩涘埗浠0寮澶达紝鍚庨潰璺熸暟瀛0~7銆傚锛045锛8杩涘埗鏁45锛夊鏋滀娇鐢╬rintf鍑芥暟杈撳嚭鏃锛屽彲浠ラ氳繃鏍煎紡鏁版槑绗︽潵鎺у埗杈撳嚭鏍煎紡銆備妇渚嬪涓嬶細int x=23;printf("%x", x); // 浠16杩涘埗鏍煎紡杈撳嚭锛岃緭鍑17锛沺rintf("%o", x)...
  • c璇█涓鎬庝箞鐪嬫噦鍗佽繘鍒鍗佸叚杩涘埗?
    绛旓細16杩涘埗浠0x寮澶达紝鍚庨潰璺熸暟瀛0~9鎴栧瓧姣岮~F锛堝皬鍐欎篃鍙互锛夛紝濡傦細0x2D锛16杩涘埗鏁2D锛夈1銆鍗佸叚杩涘埗锛堣嫳鏂囧悕绉帮細Hexadecimal锛夛紝鏄绠楁満涓暟鎹殑涓绉嶈〃绀烘柟娉曘傚悓鎴戜滑鏃ュ父鐢熸椿涓殑琛ㄧず娉曚笉涓鏍枫傚畠鐢0-9锛孉-F缁勬垚锛屽瓧姣嶄笉鍖哄垎澶у皬鍐欍2銆佸崄鍏繘鍒朵笌10杩涘埗鐨勫搴斿叧绯绘槸锛0-9瀵瑰簲0-9锛汚-F瀵瑰簲10-...
  • C璇█printf杈撳嚭16杩涘埗鏁板瓧娌℃湁0x鎬庝箞鍔
    绛旓細x鍗冲彲鑷姩杈撳嚭鏃甯0x,浣跨敤x杈撳嚭鏃舵槸0x,浣跨敤X杈撳嚭鏃舵槸0X锛沺rintf("arry[%d]=%#X\t", i, arry[i]);---杈撳嚭缁撴灉锛歺
  • C璇█涓16杩涘埗鐨勮〃绀烘柟娉?
    绛旓細16杩涘埗浠0x寮澶达紝鍚庨潰璺熸暟瀛0~9鎴栧瓧姣岮~F锛堝皬鍐欎篃鍙互锛夛紝濡傦細0x2D锛16杩涘埗鏁2D锛1銆鍗佸叚杩涘埗锛堣嫳鏂囧悕绉帮細Hexadecimal锛夛紝鏄绠楁満涓暟鎹殑涓绉嶈〃绀烘柟娉曘傚悓鎴戜滑鏃ュ父鐢熸椿涓殑琛ㄧず娉曚笉涓鏍枫傚畠鐢0-9锛孉-F缁勬垚锛屽瓧姣嶄笉鍖哄垎澶у皬鍐欍2銆佸崄鍏繘鍒朵笌10杩涘埗鐨勫搴斿叧绯绘槸锛0-9瀵瑰簲0-9锛汚-F瀵瑰簲10-15...
  • C璇█涓,涓轰粈涔16杩涘埗鏁板繀椤浠0x寮澶村晩?
    绛旓細姣斿 0x1琛ㄧず涓涓16杩涘埗鏁般傝1鍒欒〃绀轰竴涓崄杩涘埗銆傚彟澶栧锛0xff,0xFF,0X102A,绛夌瓑.鍏朵腑鐨剎涓嶇敤鍖哄垎澶у皬鍐(娉ㄦ剰锛0x涓殑0鏄暟瀛0,鑰屼笉鏄瓧姣峅)銆傛澶栵紝C/C++涓紝10杩涘埗鏁版湁姝h礋涔嬪垎銆傛瘮濡12琛ㄧず姝12锛岃-12琛ㄧず璐12銆備絾8杩涘埗鍜16杩涘埗鍙兘琛ㄨ揪鏃犵鍙风殑姝f暣鏁帮紝濡傛灉鍦ㄤ唬鐮佷腑鍐-0xF2锛孋/C++...
  • C璇█浠涔鏃跺欒緭鍑哄崄鍏繘鍒绗﹀彿
    绛旓細1. 濡傛灉鏄暟瀛楃被鍨嬶紝鍙互浣跨敤fprintf鍑芥暟鐨% x鍙傛暟鐩存帴灏鍗佸叚杩涘埗瀛楃杈撳嚭鍒版枃浠躲傚鏋滄槸瀛楃绫诲瀷锛屽彲浠ヤ娇鐢ㄤ换浣曟枃浠惰緭鍑哄嚱鏁般2. 渚嬬▼:灏嗘暟鎹緭鍏ユ枃浠1銆傛墦寮鏂囦欢1.txt銆
  • c璇█涓%#x鏄粈涔堟剰鎬
    绛旓細x鏄16杩涘埗杈撳嚭.8x鏄緭鍑8浣 x鏄甫鏍煎紡杈撳嚭, 鏁堟灉涓哄湪杈撳嚭鍓嶅姞0x.鎵浠 杩欓噷灏辨槸浠16杩涘埗杈撳嚭y鍊,骞跺湪鍓嶉潰鍔0x鍓嶇紑, 濡傛灉杈撳嚭灏忎簬8浣,閭d箞瀹為檯杈撳嚭8浣,宸︿晶琛ョ┖鏍.姣斿 y=0x20閭d箞浼氳緭鍑 y= 0x20 濡傛灉y=0x12345678 閭d箞浼氳緭鍑 y=0x12345678 ...
  • c璇█涓互鍗佸叚杩涘埗杈撳嚭0鎬庝箞杈撳嚭
    绛旓細鐢 %x 鏍煎紡杈撳嚭灏辨槸16杩涘埗銆俰nt a=0;printf("0x%08x",a);杈撳嚭锛0x00000000
  • C璇█涓鏄鐢"OX"寮澶磋〃绀烘槸鍗佸叚杩涘埗鏁,閭e崄杩涘埗,浜岃繘鍒,鍏繘鍒跺憿?
    绛旓細1锛C璇█娌℃湁鐩存帴杈撳嚭浜岃繘鍒剁殑鏂规硶銆2锛屽叓杩涘埗鍦ㄨ緭鍑虹殑鏃跺欎互0寮澶达紝渚嬪锛0123鍗佽繘鍒剁殑83 3锛屽崄杩涘埗姝e父杈撳嚭锛屾棤鐗瑰埆琛ㄧず銆4锛鍗佸叚杩涘埗鍦杈撳嚭鐨勬椂鍊欎互0X鎴栬0x寮澶达紝渚嬪0x123 鍗佽繘鍒剁殑291銆
  • c璇█,鍗佸叚杩涘埗鏁0X寮澶撮兘瀵瑰悧?
    绛旓細C璇█锛屽崄鍏繘鍒舵暟OX寮澶撮兘瀵广傚叾涓殑x鏄ぇ鍐欒繕鏄皬鍐欓兘鏃犳墍璋撶殑涓嶈繃瑕佹敞鎰忥細蹇呴』鏄暣鍨嬪父閲忔墠鏄0x(鎴0X)寮澶村鏋滄槸瀛楃甯搁噺锛屽簲鏄痋x寮澶达紝濡'\x41'灏辨槸琛ㄧず澶у啓'A'鐢ㄥ崄鍏繘鍒琛ㄧず鏁存暟鍜屽瓧绗﹁繖涓よ呯殑涓嶅悓锛岄渶瑕佹敞鎰忓尯鍒1銆16杩涘埗甯告暟鐨勮〃绀,浠0x鎴0X寮澶 2銆佽浆涔夊瓧绗︿腑鐨16杩涘埗鏁,浠寮澶,涓...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网