gpt4 book ai didi

c - 如何用这些字符制作加法器函数?

转载 作者:太空狗 更新时间:2023-10-29 16:11:06 25 4
gpt4 key购买 nike

我看到一个“谜题”,你必须用 C 写一个函数返回 a+c 的值,但是,你不能使用 + 运营商。

unsigned f(unsigned a, unsigned c) {
return <write your coe here>;
}

您只能使用以下字符:harc()&|[]*/

最佳答案

这在实践中应该可行,但我相信它依赖于未定义的行为并且会产生警告:

unsigned f(unsigned a, unsigned c) {
return &(((char*)a)[c]);
}

(实践中需要的括号更少)

工作原理如下:

   (char*)a      - cast 'a' to a 'char *' pointer 
((char*)a)[c] - treat 'a' as an array, and index the c'th element, which
will be at address c + a
&(((char*)a)[c]) - take the address of that element, i.e. c + a

最后 return 将其转换回 unsigned

使用 gcc 4.8 编译并带有两个警告的简单测试工具:

#include <stdio.h>

unsigned
f (unsigned a, unsigned c)
{
return &(((char *) a)[c]);
}

int
main (int argc, char **argv)
{
unsigned a = 1;
unsigned b = 2;
unsigned c = f (a, b);
printf ("%d + %d = %d\n", a, b, c);
return 0;
}

请注意,因为这是 C,而不是 C++,所以它可能无法使用 C++ 编译器进行编译。

关于c - 如何用这些字符制作加法器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com