【发布时间】:2018-09-09 00:03:43
【问题描述】:
为什么下面的代码将长度打印为 2 而不是 1?
int i = 2;
char tmp = i + '0';
printf("len of %s is %zu \n ",&tmp,strlen(&tmp));
【问题讨论】:
-
tmp是一个char,其值为'2'。表达式&tmp产生一个指向该字符的指针,但这不是一个字符串,因为它指向的(等效于一个)单字符数组中没有终止符。因此,strlen()调用表现出未定义的行为。
标签: c string type-conversion int