-
首先要說明的兩點是:
C++提供CIN和COUT進行輸入和輸出,不建議在C語言中使用ScanF和PrintF進行輸入和輸出;
如果使用 scanf 和 printf 進行輸入和輸出,應該遵循格式規範,不要試圖測試不匹配,你的問題是 %ld 顯然是針對長型別資料的,你必須用它來接收短型別變數,所以得到的結果不確定,完全沒有意義(因為 C 語言設計的初衷是將語言用於成熟的程式設計師, 認為使用C語言的人會遵循規範,確保輸入和輸出正確是C程式設計師的責任)。
接下來,對於您的問題,請使用格式字串作為您的問題:
short 變數,選擇 scanf 函式要分配的 %ld 格式字串,結果未定義;
我只想輸出前5個字元,如何使用格式字串來實現,我目前沒有辦法實現,除非對原來的字串進行處理,把前5個字元取出來形成乙個子字串,然後輸出;
輸出16十進位數時,資料字首怎麼辦? 使用 %x 應該沒問題;
scanf 函式只能接受 %lf 來處理 double 變數,並且不能指定格式,該格式應在 printf 中指定,而不是 scanf。
-
1.對於短變數,使用 %ld 格式字串通過 scanf 函式分配值的結果是什麼?
int整數範圍沒有問題,(short與int整數範圍相同)2如果只想輸出前 5 個字元,如何使用格式字串?
形狀像 printf("%", "12345678"),可以輸出字串的前 5 位數字。
-
例如,做空 a=10,b=20; 在記憶體中,A 和 B 各占用 2 個位元組,並儲存在連續的位址中。
printf("%d%d",a,b);a 和 b 的值分別輸出。
printf("%ld",a);兩個變數 A 和 B 占用的 4 個位元組將被視為長變數的內容,輸出輸出。
-
它與編譯器和執行時環境有關。
vc6 的結果相同。
-
int a = 0x10203040;
short b = a;
short 是 2 個位元組,給 b 賦值會產生“溢位”。 不同的編譯器對溢位數有不同的方法。 大多數做法都是“截斷”的,其中十六進製數的下 4 位數字被截斷,而上面的 4 位數字由於溢位而被丟棄。
所以 b = 0x3040,即十進位中的 12352
-
%lf 是 double 型別的輸入格式,%ld 是長整數的輸入格式,如果使用 %f 或 %d,輸入值會不正確,輸出可以不帶 l
-
禁止事項:scanf() 格式字串中的星號表示禁止賦值。 同樣的事情可以通過 ANSI 的字串化和字元連線來完成,或者您可以在執行時建立 scanf 格式的字串。
-
這是它的工作原理。
#include
int main()
float x,y;
scanf("%f,%e",&x,&y);
printf("x=%f,y=%f",x,y);缺少引數。
return 0;
-
printf("x=%f,y=%f",x ,y);加上變數 x,y,它是輸出物件。
沒有輸出物件,printf() 中的引數是錯誤的,無事可做0x30玩,一起和 c c++ 交流
-
在C語言中,雙精度輸入和輸出的格式是%lf,不管寫成%f,都是float型別。
#include
int main()
2.字元定義如下。
字元對應於資料型別和含義。
d i int 取乙個整數值並將其表示為有符號十進位整數,i 是老式的書寫方式。
o unsigned int 是乙個無符號的八進位整數(不輸出字首 0)。
u unsigned int 是乙個無符號十進位整數。
x x unsigned int 是乙個無符號的十六進製整數,x 對應 abcdef,x 對應 abcdef(不輸出字首 0x)。
f(lf) float(double) 將 f 用於單精度浮點數,將 lf 用於雙精度浮點數(尤其是 scanf 不能混合)。
e e 雙科學記數法表示數字,這裡"e"大小寫表示輸出中使用的“e”的大小寫。
g g double 使用上述兩者中最短的形式,大寫和小寫使用相同的 %e 和 %e
c 字元。 您可以根據 ASCII 程式碼將輸入的數字轉換為相應的字元。
s s char * wchar t * 字串。 輸出字串中的字元,最多為字串中的空字元(字串以'0'結束,這個'\0'即空字元)。
p void * 以十六進製形式輸出指標。
n int * 到目前為止將輸出的字元總數,而不是文字。
沒有輸入不轉換,輸出字元“%”百分比)本身。
m None 列印與錯誤內容對應的 errno 值,(例如 printf(.)"%m");
-
精度不夠,截斷它。
改成這個。 #include
void main( )
輸入浮點數時使用 f。
-
float 是 4 個位元組,double 是 8 個位元組,如果你想寫 double,你必須寫 8 個位元組,而 4 個位元組的寫入使其他 4 個位元組成為隨機數,你可以用 long float 代替 double,因為他也是 8 個位元組。
-
#include
void main()
雙精度雙精度雙用%lf,不信,你試一試。 有好的一天!
-
由於 double 不能使用 %f 來控制輸入和輸出,因此應使用 %ld 來控制輸入和輸出。
#include
void main( )
-
scanf(“%lf”,&x) 或 scanf(“%le”,&x) 可用於輸入 double 型別的資料。
空頭的值可以是 -32768 或 32767,空頭的長度為 16。 >>>More