c 對於短變數,使用 scanf 函式為 LD 格式字串賦值的結果是什麼?

發布 科技 2024-07-31
15個回答
  1. 匿名使用者2024-01-31

    首先要說明的兩點是:

    C++提供CIN和COUT進行輸入和輸出,不建議在C語言中使用ScanF和PrintF進行輸入和輸出;

    如果使用 scanf 和 printf 進行輸入和輸出,應該遵循格式規範,不要試圖測試不匹配,你的問題是 %ld 顯然是針對長型別資料的,你必須用它來接收短型別變數,所以得到的結果不確定,完全沒有意義(因為 C 語言設計的初衷是將語言用於成熟的程式設計師, 認為使用C語言的人會遵循規範,確保輸入和輸出正確是C程式設計師的責任)。

    接下來,對於您的問題,請使用格式字串作為您的問題:

    short 變數,選擇 scanf 函式要分配的 %ld 格式字串,結果未定義;

    我只想輸出前5個字元,如何使用格式字串來實現,我目前沒有辦法實現,除非對原來的字串進行處理,把前5個字元取出來形成乙個子字串,然後輸出;

    輸出16十進位數時,資料字首怎麼辦? 使用 %x 應該沒問題;

    scanf 函式只能接受 %lf 來處理 double 變數,並且不能指定格式,該格式應在 printf 中指定,而不是 scanf。

  2. 匿名使用者2024-01-30

    1.對於短變數,使用 %ld 格式字串通過 scanf 函式分配值的結果是什麼?

    int整數範圍沒有問題,(short與int整數範圍相同)2如果只想輸出前 5 個字元,如何使用格式字串?

    形狀像 printf("%", "12345678"),可以輸出字串的前 5 位數字。

  3. 匿名使用者2024-01-29

    例如,做空 a=10,b=20; 在記憶體中,A 和 B 各占用 2 個位元組,並儲存在連續的位址中。

    printf("%d%d",a,b);a 和 b 的值分別輸出。

    printf("%ld",a);兩個變數 A 和 B 占用的 4 個位元組將被視為長變數的內容,輸出輸出。

  4. 匿名使用者2024-01-28

    它與編譯器和執行時環境有關。

    vc6 的結果相同。

  5. 匿名使用者2024-01-27

    int a = 0x10203040;

    short b = a;

    short 是 2 個位元組,給 b 賦值會產生“溢位”。 不同的編譯器對溢位數有不同的方法。 大多數做法都是“截斷”的,其中十六進製數的下 4 位數字被截斷,而上面的 4 位數字由於溢位而被丟棄。

    所以 b = 0x3040,即十進位中的 12352

  6. 匿名使用者2024-01-26

    %lf 是 double 型別的輸入格式,%ld 是長整數的輸入格式,如果使用 %f 或 %d,輸入值會不正確,輸出可以不帶 l

  7. 匿名使用者2024-01-25

    禁止事項:scanf() 格式字串中的星號表示禁止賦值。 同樣的事情可以通過 ANSI 的字串化和字元連線來完成,或者您可以在執行時建立 scanf 格式的字串。

  8. 匿名使用者2024-01-24

    這是它的工作原理。

    #include

    int main()

    float x,y;

    scanf("%f,%e",&x,&y);

    printf("x=%f,y=%f",x,y);缺少引數。

    return 0;

  9. 匿名使用者2024-01-23

    printf("x=%f,y=%f",x ,y);加上變數 x,y,它是輸出物件。

    沒有輸出物件,printf() 中的引數是錯誤的,無事可做0x30玩,一起和 c c++ 交流

  10. 匿名使用者2024-01-22

    在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");

  11. 匿名使用者2024-01-21

    精度不夠,截斷它。

    改成這個。 #include

    void main( )

    輸入浮點數時使用 f。

  12. 匿名使用者2024-01-20

    float 是 4 個位元組,double 是 8 個位元組,如果你想寫 double,你必須寫 8 個位元組,而 4 個位元組的寫入使其他 4 個位元組成為隨機數,你可以用 long float 代替 double,因為他也是 8 個位元組。

  13. 匿名使用者2024-01-19

    #include

    void main()

    雙精度雙精度雙用%lf,不信,你試一試。 有好的一天!

  14. 匿名使用者2024-01-18

    由於 double 不能使用 %f 來控制輸入和輸出,因此應使用 %ld 來控制輸入和輸出。

    #include

    void main( )

  15. 匿名使用者2024-01-17

    scanf(“%lf”,&x) 或 scanf(“%le”,&x) 可用於輸入 double 型別的資料。

相關回答
22個回答2024-07-31

空頭的值可以是 -32768 或 32767,空頭的長度為 16。 >>>More

11個回答2024-07-31

如果未新增 0,則 sum 為任意值。 錯誤發生在這裡。 >>>More

17個回答2024-07-31

當然不是,它們儲存在記憶體的不同位置。

16個回答2024-07-31

你弄錯了位元組的含義。

位元組不是 0 或 1,而是 8 個零或 1。 >>>More

18個回答2024-07-31

在中間使用類似的 2 次。

for(int i... >>>More