首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不能用这种方法计算一个数字的平方

不能用这种方法计算一个数字的平方
EN

Stack Overflow用户
提问于 2018-03-22 06:49:33
回答 2查看 0关注 0票数 0

我找到了一个计算数字平方的函数:

代码语言:txt
复制
int p(int n) {
    int a[n]; //works on C99 and above
    return (&a)[n] - a;
}

它返回N2的值。问题是,它是怎么做到的?经过一些测试,我发现(&a)[k](&a)[k+1]sizeof(a)/sizeof(int)。那是为什么?

EN

Stack Overflow用户

发布于 2018-03-22 14:55:21

显然是黑客,但是一种不用使用*操作员(这是编码竞赛的要求)。

代码语言:txt
复制
(&a)[n] 
代码语言:txt
复制
(a + sizeof(a[n])*n)

因此整个表达式是

代码语言:txt
复制
  (&a)[n] -a 

= (a + sizeof(a[n])*n -a) /sizeof(int)

= sizeof(a[n])*n / sizeof(int)
= sizeof(int) * n * n / sizeof(int)
= n * n
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档