c語言的問題char型輸出的16進位制數值怎麼輸出十進

2021-12-23 08:00:37 字數 4885 閱讀 6569

1樓:匿名使用者

1、對計算機來說,某一個變數不管是char,int,它在儲存時都是二進位制的數字而已,輸出16進位制應該是在com_putchar中控制的,對於一個數來說,輸出的格式是幾進位制是程式來控制的,比如printf("%d", dl), 那麼送到終端顯示的是十進位制的,如果是%x就是16進位制,%o就是8進位制,但是在程式裡,dl就是一個數字而已。

2、例如:dh=0x07; dl=7;  x =  (dh << 8) | dl;

**********=

#include

main()

得:33

0x100

2樓:金色潛鳥

char 型就是 一位元組長度 的整型。

計算機內部,無所謂16,10,8,2進位制值,一律是2進位制。

你可以直接把它當 十進位制值 用於運算。

例如:dh=0x07; dl=7; x = (dh << 8) | dl;

**********=

下面例子,混合運算。

#include

main()

得:33

0x100

3樓:匿名使用者

dh,和dl分別是什麼型別的值啊?

那你要用於怎麼樣的計算?

既然是char型的就可以用於計算,比如dl='a'

那麼dl ++;dl就等於『b'了

如果dl='1',而你想用1來計算的話

那麼(dl - '0')整體作為值來計算

4樓:

printf("%d", dl)

c語言中char型別陣列的輸出問題--輸出時為何需要&符?

5樓:墨汁諾

char a[20];

那麼a表示字元陣列的起始地址,它和&a[0]是一個意思。

使用printf()輸出字元陣列a的內容:

printf("%s\n", a);

就等同於printf("%s\n", &a[0]);

輸出的時候用:

int i = 0;

for (i=0; i<

防止緩衝區溢位可以用這樣的:

fgets(a, sizeof(a), stdin);

a[strlen(a) - 1] = '\0';

6樓:匿名使用者

你前面輸出格式為"%s"即字串型別,後面對第一個字元s[0]加&表示為取得整個字串的首地址,再以字串的格式肯定讀出的是整個字串,如果你把"%s"改為"%c"把&去掉就會輸出首字元,如果只把&去掉,那麼你是以字串的格式輸出首字元,格式不對當然是亂碼了

7樓:

printf("%s",s[0]); -- 不加&符號 s[0] 表示 整型值,數值等於s裡第一個字元(你的情況是h) 的 ascii 值,如果用%d 格式列印,得104,如果用%c 格式列印,得字母h, 用%s列印 得亂碼。

printf("%d",s[0]); 打出 104printf("%c",s[0]); 打出 h%s 輸出格式,用於字串,要求給 字串的首地址,char s 的首地址 是 &s[0] 或 s.

printf("%s",s); 打出打出打出打出 w are you....

8樓:匿名使用者

& 這個符號叫做取址運算子 標誌一個地址 對應前面的%s c語言基礎很重要! 一些細節要注意!

9樓:淦菀歐陽陽冰

query取得iframe中元素的幾種方法在iframe子頁面獲取父頁面元素

**如下:$(

10樓:我是菜狗

那當然%s要的是地址

如果你printf("%s",s); 也是一樣的

s是陣列的首地址

11樓:匿名使用者

記住c語言的nb之處在於在處理字串的時候使用一種超乎尋常的思維: 用一地址或字元指標就可以代表一字串!

當然,想列印一字串,也通過這種方式就可以獲得。

為什麼呢?

因為c語言內部的機制表明: 它對字串的處理是,遇到'\0',其實也就是0,就表明字串結束了,所以呢,不論這個指標在什麼位置都沒關係,編譯器會依次向後尋找字元,知道遇到null(或0或'\0')就算字串結束了。

12樓:

因為%s要的是一個地址 所以要這麼寫

也可以是s

c語言程式設計,輸入十進位制數輸出十六進位制和八進位制

13樓:園林植物手冊

可以通過下面的公式解決

#include

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

while(m)

int i;

for(i = cot8 - 1; i >= 0; i--)printf("%d", array8[i]);

puts("");

for(i = cot16 - 1; i >= 0; i--)擴充套件資料:

十進位制轉十六進位制的具體方法:對於整數部分,用被除數反覆除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的餘數。另外,所得到的商的最後一位餘數是所求二進位制數的最高位。

對於小數部分,採用連續乘以基數16,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。

10進位制數轉換成十六進位制數,這是一個連續除以16的過程:把要轉換的數,除以16,得到商和餘數,將商繼續除以16,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。

14樓:匿名使用者

可以格式化輸出。

#include

int main()

15樓:匿名使用者

#include

void showbit(int n)

printf("%d",n%2);

}void showoct(int n)

printf("%d",n%8);

}void showhex(int n)

printf("%d",n%16);

}int main()

16樓:著述的鴨子非了

#include

main()

while(n!=0);

for(i--;i>=0;i--)

putchar(s[i]);

} //十進位制轉八進位制 十六進位制方法類似#include

void main()

c語言關於字元變數輸出的問題

17樓:

佔3個(至少)字元位置,如果不足就用空格填充,過多的話就全部輸出。

18樓:

%3d中的3表式:輸出佔3列,如果少於3列則左補空格;如果多於3列則全部輸出

例如:int i=15;

printf("%3d",i);

輸出結果是: _ 15 (其中"_ "表式一個空格,空格+15剛好佔3列)

再如int i=1542;

printf("%3d",i);

輸出結果是: 1542 佔四列(大於3列,所以全部輸出).

19樓:風若遠去何人留

字元變數,也就是char型別的變數,有兩種輸出模式:

1 按照字元輸入。即輸出本身的字元,如果是'a',那麼就輸出a。

有兩種方法:

1) 用printf輸出。

%c格式符是用作char變數輸出的,如

char c = 'm';

printf("%c", c);

這樣就輸出m了。

2)用putchar輸出。

putchar 功能為輸出一個字元,所以

char c = 'm';

putchar(c);

同樣是輸出m。

2 輸出char變數的ascii碼值。

char變數儲存的本質為ascii碼,所以可以通過printf,用%d或%x輸出其值。

char c = 'm';

printf("%d, 0x%x\n", c, c);

會分別以10進位制和16進位制輸出m的ascii碼值,即77,0x4d

c語言字元陣列如何轉成16進位制

20樓:幻翼高達

需要準備的材料分別有:電腦、c語言編譯器。

1、首先,開啟c語言編譯器,新建一個內

初始容.cpp檔案,例如:test.cpp。

2、在test.cpp檔案中,輸入c語言**:

char *pkey = "aa1f1905a8f3e4d3c3c536fe615c93bc";

for (int i = 0; i < strlen(pkey) - 1; i += 2)

3、編譯器執行test.cpp檔案,此時成功將字串陣列轉為了16進位制的形式進行了輸出。

21樓:匿名使用者

#include

#include

#include

int main(void)

for(i=0;i

c語言中char的問題,C語言中char的問題

書上講的是使用上的情況。對char型別的情況介紹是正確的,但是對字元常量書上忽略了一點技術細節。字元常量這個東西的具體情況並不是像你理解的那樣,這個東西的型別其實是 int而不是char。你可以找個編譯器試試看sizeof a 的結果是4。所以你寫 字元 或者 1234 是可以的,如果你寫 5字元 ...

c語言怎麼去掉輸出的,c語言怎麼去掉輸出的

把 printf d n 10 換成 if n 10 0 printf d n 10 c語言,將double資料輸出時,如何去掉小數位多餘的0?printf g n a 這樣試一下,是不是你想要的 double a 1.001 printf lf a 會輸出1.001000,怎樣才能輸出1.001 ...

c語言輸入整數,按降序排序輸出,c語言輸入10個整數,按降序排序輸出

include int mysort int a,int n return 0 int main mysort a,10 for i 9 i 0 i printf 3d a i printf n return 0 用c語言編寫,輸入10個數按降序排列 源程式 如下 define crt secure...