亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 奇葩的輸出 [打印本頁]

作者: 18345093167    時間: 2016-08-16 11:37
標(biāo)題: 奇葩的輸出
#incldue<stdio.h>
int main()
{
    long long int a = 1,b =2,c= 3;
    printf("%d %d %d\n",a,b,c);
   return 0;
}
運行結(jié)果?
理由?
望大神指教,盡量畫下圖唄(x86 小端存儲)
作者: 王楠w_n    時間: 2016-08-16 13:03
雖然不會,幫忙頂回復(fù) 1# 18345093167


   
作者: hellioncu    時間: 2016-08-16 13:38
long long int是64位的,應(yīng)該用printf("%"PRId64,...)輸出,PRId64之類的在inttypes.h中定義。
作者: cjfeii    時間: 2016-08-16 14:22
試一下 %ld
作者: MMMIX    時間: 2016-08-16 15:36
hellioncu 發(fā)表于 2016-08-16 13:38
long long int是64位的,應(yīng)該用printf("%"PRId64,...)輸出,PRId64之類的在inttypes.h中定義。


有誰規(guī)定 long long int 必須是 64 位么?

既然知道了類型是 long long int,直接用 lld 就可以了。

PRIdN 之類的宏,是專門給它們對應(yīng)的 typedef 類型用的,因為同一個 typedef 類型,例如 int64_t,在不同實現(xiàn)中對應(yīng)的實際類型可能是不一樣的,所以才有了 inttypes.h 中的那些宏。但是在已知實際類型的情況下,就沒有必要再去用它們了。
作者: MMMIX    時間: 2016-08-16 15:41
回復(fù) 1# 18345093167


    程序都是錯的(包含未定義行為),談什么運行結(jié)果?
作者: hellioncu    時間: 2016-08-16 16:50
MMMIX 發(fā)表于 2016-08-16 15:36
有誰規(guī)定 long long int 必須是 64 位么?

既然知道了類型是 long long int,直接用 lld 就可以了。 ...


好像有些不支持lld,所以才需要PRId64此類的宏
作者: evaspring    時間: 2016-08-16 17:07
回復(fù) 2# 王楠w_n


    不會就學(xué)啊 妹紙學(xué)前端 css javascript 很快的 有個編輯器和瀏覽器就行
作者: 18345093167    時間: 2016-08-16 17:18
程序的輸出是1  0 2  ,程序本身沒有錯
作者: 18345093167    時間: 2016-08-16 18:17
#include寫錯了

作者: MMMIX    時間: 2016-08-16 20:48
hellioncu 發(fā)表于 2016-08-16 16:50
好像有些不支持lld,所以才需要PRId64此類的宏


long long 和 inttypes.h 都是 C99 里面的;怎么會只支持一個。
作者: MMMIX    時間: 2016-08-16 21:06
回復(fù) 1# 18345093167


    這種寫法
    long long int a = 1,b =2,c= 3;
    printf("%d %d %d\n",a,b,c);
的行為未定義。正確的寫法(之一)是:

    long long int a = 1,b =2,c= 3;
    printf("%lld %lld %lld\n",a,b,c);
作者: bruceteen    時間: 2016-08-17 08:20
MMMIX 發(fā)表于 2016-08-16 20:48
long long 和 inttypes.h 都是 C99 里面的;怎么會只支持一個。

有可能對方用的MinGW,而且用了windows的crt庫,那個庫不認(rèn)識%lld這種格式
一個解決方法是,在#include <stdio.h>之前,加上一句 #define __USE_MINGW_ANSI_STDIO 1
作者: yulihua49    時間: 2016-08-17 10:44
hellioncu 發(fā)表于 2016-08-16 16:50
好像有些不支持lld,所以才需要PRId64此類的宏

window就不支持%lld,也不支持PRId64。
作者: hellioncu    時間: 2016-08-17 11:03
yulihua49 發(fā)表于 2016-08-17 10:44
window就不支持%lld,也不支持PRId64。


應(yīng)該是從VS2012開始就支持了。
只是支持lld,沒有宏還要早
作者: bskay    時間: 2016-09-23 10:53
茴香豆的茴字有四種寫法你們知道嗎?
作者: knull    時間: 2016-09-30 13:41
printf某個整數(shù),本質(zhì)上是傳的地址,然后根據(jù)%d確定取值大小。(C程序語言(k&r版本上有專門的自己實現(xiàn)的printf))
所以,%d取的是4個字節(jié)(你的代碼是取連續(xù)的12個字節(jié));而a,b,c有8個字節(jié)。所以,理論上來說,輸出的是a的8字節(jié)和b的4個字節(jié)(小端的)。
printf的64位整數(shù)輸出,在windows下用的是%lld,linux用的是%ld,所以才有上面那位仁兄說的,"%"PRI64這種格式,就是為了跨平臺。




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2