鱼C论坛

 找回密码
 立即注册
查看: 3788|回复: 14

求解释这句C代码。

[复制链接]
发表于 2012-6-26 22:46:39 | 显示全部楼层 |阅读模式
3鱼币
#include "stdafx.h"
main(int _){for(_=0;putchar(_++["N%Qt{j%Kjsl}nftrns&\5"]-5););}

最佳答案

查看完整内容

程序等价于:继而等价于将字符串里的每个字符ascii码+5得:接下来很容易了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-26 22:46:40 | 显示全部楼层
本帖最后由 仰望天上的光 于 2012-6-26 23:22 编辑

程序等价于:
  1. main(int n){
  2.         for(n=0;
  3.         putchar(n++["N%Qt{j%Kjsl}nftrns&\5"]-5);
  4.         );
  5. }
复制代码
继而等价于
  1. main(int n){
  2.         char *str = "N%Qt{j%Kjsl}nftrns&\5";
  3.         for(n=0;putchar(str[n++]-5););
  4. }
复制代码
将字符串里的每个字符ascii码+5得:
  1. main(int n){
  2.         char *str = "I Love Feng Xiaoming! \0";
  3.         for(n=0;putchar(str[n++]););
  4. }
复制代码
接下来很容易了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-27 10:19:23 | 显示全部楼层
:lol  楼主辛苦了!!

像这种代码,都是在格式上做文章!先格式标准输出后慢慢就能看出端倪的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-27 12:10:26 | 显示全部楼层
哇塞,so cool!这是和代码闹着玩呢吧,有意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-27 12:18:35 | 显示全部楼层
呵,这是混乱代码大赛吗,又加密,又混乱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-27 12:41:54 | 显示全部楼层

                 牛X。。。。。。可否解释下 printf("%c","Hello"[0]);  这样的情况?为什么编译不会出错,还会打印出'H'呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-27 16:53:31 | 显示全部楼层
Tzdner_C 发表于 2012-6-27 12:41
牛X。。。。。。可否解释下 printf("%c","Hello"[0]);  这样的情况?为什么编译 ...

[]是一个运算符.C标准里规定它有两个操作数,其中一个是指针类型,另一个int类型.但是C标准没有规定左边的一定要是指针类型.所以把指针类型写在[]里面也可以,就是说:
已知 int vec[10];
那么vec[10]和10[vec]是等价的.
同理:
char* str = "abcdef";
str[2]和2[str]相同和2["abcdef"]也相同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-27 17:10:05 | 显示全部楼层
仰望天上的光 发表于 2012-6-26 22:46
程序等价于:继而等价于将字符串里的每个字符ascii码+5得:接下来很容易了

{:2_25:}O(∩_∩)O哈哈~减5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-27 20:43:43 | 显示全部楼层
仰望天上的光 发表于 2012-6-27 16:53
[]是一个运算符.C标准里规定它有两个操作数,其中一个是指针类型,另一个int类型.但是C标准没有规定左边的一 ...

那对于char * str = "Hello world!"   这里"Hello world!"这个字符串,是一个指针变量,还是一个字符串常量,按照你的推论,这就是个指针。。。不过你对于[]解释的挺清楚,长知识了,谢了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-27 20:46:16 | 显示全部楼层
小甲鱼 发表于 2012-6-27 17:10
O(∩_∩)O哈哈~减5

甲鱼大神光临寒舍,使得寒舍蓬荜生辉啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-27 21:13:55 | 显示全部楼层
Tzdner_C 发表于 2012-6-27 20:46
甲鱼大神光临寒舍,使得寒舍蓬荜生辉啊!

{:2_29:}哟西,这么严重?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-28 08:44:18 | 显示全部楼层
Tzdner_C 发表于 2012-6-27 20:43
那对于char * str = "Hello world!"   这里"Hello world!"这个字符串,是一个指针变量,还是一个字符串 ...

"Hello word"是个字符串,或者说是个以'\0'结尾的字符数组.简单点,它就是一个数组.我前面说过了,数组只有在两种情况下(sizeof和&的时候不会退化为指针).在这里显然并没有出现这两种情况,故而退化为指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-28 15:51:09 | 显示全部楼层
小甲鱼 发表于 2012-6-27 17:10
O(∩_∩)O哈哈~减5

说得对  -5呵呵    我就觉得纳闷  怎么会+5  。版主解释的很好  支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-28 16:29:32 | 显示全部楼层
这么高深。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-29 01:17:00 | 显示全部楼层
看到大神们 都来了 我来也看下  长长知识:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-28 04:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表