c - 是 scanf("%4s%4s", b, b); 定义明确?
问题描述
#include <stdio.h>
int main(void)
{
char b[5];
scanf("%4s%4s", b, b);
//My input: "qwer<Enter>sgsh<Enter>"
printf("%s", b);
//Output: sgsh
}
C99:在前一个和下一个序列点之间,对象的存储值最多只能通过表达式的评估修改一次。
在这种情况下,我正在修改b
twice
. 不是undefined behavior
吗?
解决方案
推荐阅读
- go - 解组自定义 [32] 字节类型返回零值
- css - 导航链接占用整个宽度
- flutter - 在颤动中将缩放图像显示为小部件
- asp.net-web-api2 - 在哪里将 DTO 映射到实体以在存储库中创建/添加方法
- laravel - 如何在 Laravel 中进行角色库访问?
- c++ - 为什么数字输出会受到 cout 语句的影响?
- facebook - FACEBOOK GRAPH API - 查找用户发表的所有评论
- go - 没有接收器的模拟功能
- azure-devops - Azure Devops - [DataTestMethod] 类型的单元测试方法未在 YAML 构建中执行
- javascript - 对 js if 语句使用 ejs 输入