gpt4 book ai didi

c - 与c中的scanf语句相关

转载 作者:行者123 更新时间:2023-12-02 09:20:01 24 4
gpt4 key购买 nike

我遇到了以下代码,但我无法理解 scanf 部分。

int main()
{
int i,j;
scanf("%d %d"+scanf("%d %d",&i,&j));
printf("%d %d",i,j);
return 0;
}

我在输入 4 8 9 上运行代码,它返回 9 8。

有人可以解释一下工作原理吗?

最佳答案

内部 scanf("%d %d",&i,&j) 返回一个计数,例如 2,1、EOF(或者可能是 0)。

将该计数添加到格式字符串“%d %d”,将格式偏移该计数(例如 2),以形成“%d”。这只是指针加法。 @John Bollinger

然后代码执行相当于 scanf("%d"); 的操作,这是未定义的行为 (UB),因为它缺少匹配的 int * 来配合“%d”@mch

Can someone please explain the working?

它不是“工作”,它是 UB。


踩在 thin ice 上的变体。如果第一个 scanf() 返回 2,它将“工作”。然而,这对我来说看起来像是黑客代码。

int main() {
int i,j;
scanf("%d %d"+scanf("%d %d",&i,&j), &i);
printf("%d %d",i,j);
return 0;
}

关于c - 与c中的scanf语句相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43355450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com