永发信息网

急急急,求大神帮忙, #include <stdio.h> void f(__int128_t s,int i) { int c=(((s&((__in

答案:3  悬赏:10  手机版
解决时间 2021-03-08 17:14
  • 提问者网友:你挡着我发光了
  • 2021-03-08 06:08
急急急,求大神帮忙,
#include <stdio.h> void f(__int128_t s,int i) { int c=(((s&((__int128_t)0x1F<<i*5))>>i*5)+65); printf("%c",c); } int main() { for(int i=0;i<10;i++) { f(0x128EC789572FC8,i); } printf("\n"); }
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-08 07:32
gcc 里有 __int128_t 型,其它编译器 没有。
从数值看,64位就够了。如果 你 用 MS VC++ 6.0 之类的编译器,只要稍加修改程序就可正确跑。
完整程序如下,窍门在第三行的宏定义:
#include<stdio.h>
#include <stdlib.h>
#define __int128_t _int64
void f( __int128_t s,int i) {
int c=(((s&(( __int128_t)0x1F<<i*5))>>i*5)+65);
printf("%c",c); }
main()
{
int i;
for(i=0;i<10;i++) { f(0x128EC789572FC8,i); }
printf("\n");
}
输出字符们:I_LOVE_YOU
全部回答
  • 1楼网友:往事埋风中
  • 2021-03-08 10:35
你好! ~ 然后呢要求是什么样的 ~ 仅代表个人观点,不喜勿喷,谢谢。
  • 2楼网友:患得患失的劫
  • 2021-03-08 09:11
~ 然后呢要求是什么样的 ~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯