[问题] printf( "%n" , &y ) 的问题

楼主: lj0113 (tiny legend)   2015-06-18 23:19:35
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++
问题(Question):
printf() function 里的 %n 是否是 compiler depend ??
小弟手边目前只有这个 compiler ...
预期的正确结果(Expected Output):
123 : 5
错误结果(Wrong Output):
123 : 44
程式码(Code):(请善用置底文网页, 记得排版)
int i = 44;
printf( "123 :%n", &i );
printf( " %d\n", i );
作者: Ebergies (火神)   2015-06-18 23:31:00
我不确定是怎么样不过这个功能很容易产生漏洞建议忘了它吧
作者: PkmX (阿猫)   2015-06-19 00:30:00
%n是C标准有规范的 请见C11 7.21.6.1 - fprintf至于为啥你的编译器会跑出44就是另外一件事情了...
作者: LPH66 (-6.2598534e+18f)   2015-06-19 04:10:00
如果是写 printf("123 :%n %d", &i, i); 那确实可能跑出 44真的有分行写的话那应该要出现 5(应该说写上上行则一定跑出 44, 因为有函式呼叫挡在中间)
作者: PkmX (阿猫)   2015-06-19 15:48:00
C11就是2011年发布的C语言标准 不过查了一下%n从C89就有了
楼主: lj0113 (tiny legend)   2015-06-19 22:20:00
好 谢P大 窝去看看
作者: yvb   2015-06-20 16:41:00
应该是你的 DEV C++ 所叫用的 compiler 有 bug 吧.
作者: WPC001 (好闷, 迷惘~~)   2015-06-21 12:08:00
跟compiler无关... 只跟lib的版本有关...
作者: yvb   2015-06-21 13:57:00
楼上说得是. 就此问题, 的确lib有问题的可能性极高,但也遇过gcc和lib版本不搭配的问题,或不同编译选项造成不同结果...

Links booklink

Contact Us: admin [ a t ] ucptt.com