23,223
社区成员
发帖
与我相关
我的任务
分享// 用-O2编译,结果输出2;用-O0编译,结果输出5
#include <stdio.h>
#include <stdlib.h>
int test( int *restrict pci, int *restrict pi )
{
( *pi ) += 1;
*pi = ( *pci ) + 2;
return *pci; // 如果-O2,编译器会忽略前面两行,直接返回*pci最初的值
}
int main( void )
{
int a = 2;
printf( "%d", test(&a, &a) );
return 0;
}