2017-09-02 78 views
-8
#include <stdio.h> 
//Compiler version gcc 6.3.0 

int main(void) 
{ 

    float a=10; 
    printf("%f"+1,a); 

    return 0; 
} 

輸出 - d誰能告訴我這是爲什麼在C語言中發生

#include <stdio.h> 
//Compiler version gcc 6.3.0 

int main(void) 
{ 

    float a=10; 
    printf("%f"+36,a); 

    return 0; 
} 

輸出 - P

當過我改變的+1值它給不同的輸出。 ...解釋一下爲什麼

+0

你忘了問你的編譯器所有的警告和調試信息。用[gcc](http://gcc.gnu.org/)用'gcc -Wall -Wextra -g'編譯(然後編譯器會警告你)。 –

+0

順便說一句,http://floating-point-gui.de/是一個有用的讀取 –

+0

你真的認爲'+ 1'和'+ 36'在做什麼?你並沒有改變你想要打印的數字,也沒有(真的)改變你想要打印的格式字符串。你正在做一些非常奇怪的指針算術,這不可能導致有用或正常工作的代碼。你試圖從他們那裏學習一些奇怪的東西嗎?或者是什麼? [附註:我*可以*告訴你爲什麼會發生這種情況,如果你真的想知道,但首先你必須解釋你真的想做什麼。] –

回答

0

我不確定你到底想要完成什麼。

如果你想要做的總和,你就必須在逗號後做到這一點:

從這個:

printf("%f"+36,a); 

這樣:

printf("%f",a+36); 

同爲其他總和。

+0

如果這對你有效,請接受它作爲答案。 而且,對於誰低估了我的答案:請考慮留下評論,說明如何改進;我真的很感激! –

+0

我猜想downvote可能是因爲我們無法知道這是OP實際上試圖做什麼。我現在在投票,所以我可以投票結束OP對同一問題的第二個問題(在https://stackoverflow.com/questions/46015392/can-anybody-tell-me-why-this-happening-in-c )作爲這個的一個副本。 –

+0

@SteveSummit你是完全正確的,我的答案只適用於如果這是OP的問題。沒有太多的細節,所以誰知道他想要做什麼。另外,我之前沒有看到其他問題,但OP已將'float'改爲'int',所以他可能只是試圖用SO來代替隨機的東西,而不是指南;誰知道。無論如何,謝謝! –

0

你絕對應該編譯所有警告。我用gcc -Wall -Wextra -Werror -pedantic。它沒有編譯我的警告,因爲printf的參數太多。

當我測試了你發佈的代碼時,它打印出'f'和'A ???'。我不確定你想要做什麼,但是我相信它與你的浮點數如何與數字相加來給你一個Ascii角色。

相關問題