- 论坛徽章:
- 0
|
本帖最后由 haicg 于 2017-06-24 16:53 编辑
struct utmp *buf ;
printf("%s\n", ctime( &((long int)(buf->ut_line)) ));与long i;printf(" ");printf("%10ld", buf->ut_time);i=(long int)(buf->ut_line);这段语句有什么区别啊?我感觉他们在功能上是一致的。但是在gcc下第一句无法进行编译,提示有语法错误。
不好意思,昨天的问题描述错了,真是对不起大家了。下面的是问题的描述:
程序一:
void show_utmp( struct utmp *buf )
{
long i;
printf("%-s",buf->ut_user);
printf(" ");
printf("%-8.8s",buf->ut_line);
printf(" ");
i=(long int)(buf->ut_line);
printf("%s\n", ctime( &i) );
}
程序二:
void show_utmp( struct utmp *buf )
{
printf("%-s",buf->ut_user);
printf(" ");
printf("%-8.8s",buf->ut_line);
printf(" ");
printf("%s\n", ctime( &((long int)(buf->ut_line)) ));
}
程序一可以编译通过,且正确运行。程序二有比编译错误,具体的错误是:error: lvalue required as unary ‘&’ operand.
多年之后看到了,自己的帖子,感受颇丰。
程序二的问题最下面的朋友已经帮忙回复了,目的就是为了实现类型的强制转换。
|
|