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 name 20 後,為什麼用printf s ,name 就能輸出一連串字串
如果你寫的是 cout a c 2 輸出 62我並不覺得奇怪。因為 a 的ascii碼是65,c 是67。相加是132。a c 的 結果型別 是int,因此它的十六進位制是0x00000084,最高位是0表示正數!你可以求sizeof a c 驗證一下,是4,int的大小 3.static case...
c語言char輸出字串是亂碼,C語言,字串輸出是亂碼
重點是creatlist這個函式,datac必須是malloc分配出來的記憶體,不然就會出問題.應該是這樣的 p pdata malloc 256 scanf s p pdata 傑大哥哈哈哈 asadrcvs5 2 f amng bkuqte lzlr kxojfrc eqsauzx 夫婿久離別,...
c語言輸出m,n區間素數的問題,C語言輸出 m,n 區間素數的問題
1 其後面緊跟的第一個語句塊,對本案例而言,是 if a i 0 2 這句話意思是,如果標誌位flag為真 c語言定義一切非零的數即為真 那麼跳過下面的語句直接繼續迴圈。你可以改成 if flag 1 continue 或者 if flag 0 continue 是一樣的效果。1 不寫大括號自動找第...