int fkt(int&i){return i ++; }
int main()
{
int i = 5;
printf("%d ", fkt(i));
printf("%d ", fkt(i));
printf("%d ", fkt(i));
}
Run Code Online (Sandbox Code Playgroud)
打印'5 6 7'.假设我想像这样打印'5 7 9',是否有可能以类似的方式在fkt()中没有临时变量?(临时变量会略微降低效率,对吗?)即,类似的东西
return i+=2
Run Code Online (Sandbox Code Playgroud)
要么
return i, i+=2;
Run Code Online (Sandbox Code Playgroud)
这两者首先增加我然后返回它,这不是我需要的.
谢谢
编辑:主要原因,我在一个函数而不是外部这样做是因为fkt将是一个函数指针.原来的功能将与i做其他事情.我只是觉得使用{int temp = i; I + = 2; return temp;}看起来不像{return i ++;}.
我不关心printf,这只是为了说明结果的使用.
编辑2:哇,这似乎是一个比传统板更多的聊天:)谢谢你的所有答案.我的fkt实际上就是这个.根据某些条件,我将get_it定义为get_it_1,get_it_2或get_it_4:
unsigned int (*get_it)(char*&);
unsigned int get_it_1(char* &s)
{return *((unsigned char*) s++);}
unsigned int get_it_2(char* &s)
{unsigned int tmp = *((unsigned short int*) s); s += 2; return tmp;}
unsigned int get_it_4(char* &s)
{unsigned int tmp = *((unsigned int*) s); s += 4; return tmp;}
Run Code Online (Sandbox Code Playgroud)
对于get_it_1来说,它是如此简单......我将来会尝试提供更多背景信息......
S.L*_*ott 28
"临时变量会略微降低效率,对吧?"
错误.
你测量过吗?请注意,++PDP-11只具有神奇的效率.在大多数其他处理器上它和它一样+=1.请测量两者,看看实际差异究竟是什么.
Cog*_*eel 18
(临时变量会略微降低效率,对吧?)
如果这是你要求的主要原因,那么你太早就会担心.在遇到实际性能问题之前,不要再猜测编译器.
如果你想让fkt能够为i添加不同的金额,那么你需要传递一个参数.不存在重大理由,更喜欢++了+=.
您可以增加两次,然后减去,例如:
return (i += 2) - 2
Run Code Online (Sandbox Code Playgroud)
但是,回答这个问题,我认为你不应该害怕使用临时变量.
| 归档时间: |
|
| 查看次数: |
6119 次 |
| 最近记录: |