[c 语言谜题] 程序填空,老程序员来做做

2018-09-26 12:05:52 +08:00
 shilyx
#include <stdio.h>

int main() {
[]
printf("%p\n", **************************************************************p);
return 0;
}

在 [] 标记内加入一条语句,使得:
1、程序编译通过,无错误(警告随意);链接通过,无错误(警告随意)
2、程序能够运行,无崩溃和运行时错误
3、源代码为.c 文件
4、如果用 vs,则使用 Release 配置;用 gcc 也行
5、加入的语句不能忽略分号
6、printf 一句必须能够正常输出内容

问:
1、要加入的语句的长度最小是几(含分号、空白、字符、符号等)?
2、这个最小长度的语句的 sha256 哈希值是多少?

ps:为了确保为数不多的趣味性,请勿直接贴出语句。
6241 次点击
所在节点    程序员
69 条回复
innoink
2018-09-26 14:48:27 +08:00
@chenstack 能无限解引用的东西,大概只有一种
Phox
2018-09-26 14:53:54 +08:00
不应该是 9 哇? 645e319a3085376dbee5a71b8359010b1d9a035283156aa1b1323552bb0fac04
pkokp8
2018-09-26 14:55:13 +08:00
@innoink 哈哈,的确,脑子没转过来,没想到,不过看到 6 必须有输出,这个方法不行
Phox
2018-09-26 14:57:11 +08:00
@Phox 另外,中规中举无告警的 15,3adb4717467d81e0f3e91e6890171320c5a7c75468176c6fac58e7d6e8e1a88b
GeruzoniAnsasu
2018-09-26 15:07:39 +08:00
这里有个不同于#4 #6 的:
无\n
a1588fb5c7d40509cd82615825c32c65231d0713c81b054871bce4e8cd58c035
有\n
c69b85657ed71cf4d671ef6f4b4861adef7c9019cfd547e020ac118388744412

长度 14
innoink
2018-09-26 15:08:29 +08:00
910e692fdda462dde57e91a4778de7cdbf4f2090ffdebe770b90be808ed5d024 10 开-Wall 会有警告
bf9b20a32821ab49a932547b80e122e5bf66368bea36a5cd07a76d58e81f972a 10 gcc 通过,g++通不过
还有 14 的写法,很多变化,可以完全无警告
besto
2018-09-26 15:17:26 +08:00
@innoink 同思路无警告只需 12 就行了
innoink
2018-09-26 15:19:07 +08:00
@besto 初始化一下就行了
innoink
2018-09-26 15:19:25 +08:00
@besto 其实还可以#define
cjw1115
2018-09-26 15:21:27 +08:00
10,2c37e77354dad4539dde1674c773f95d73faba8e9011aaa0d864d49b7c9ed793
XiaoxiaoPu
2018-09-26 15:24:15 +08:00
@Phox 哈哈,绞尽脑汁终于想到这个了。不过你的 hash 是带了换行的吧?不带换行的是 4ccce30e94240276e8312a60e59f662783a24df6f5695e65d626196d2220c764


@GeruzoniAnsasu 跟我第一次的思路一样,证明我确实想出来了,无换行的 sha1sum 是 52f9449d2dd0ef1deb042f99a8ab1ad852c667cb

另外 gcc 下 10 个字符无警告 8a62c72686689179794818bb4efe89be7e1139e6c729a71842eb6cc4bdeb42bb
besto
2018-09-26 15:28:02 +08:00
@innoink
@garzon
我想了一下,如果只要求 printf 能输出内容(意思是不注释掉),而不要求程序能输出内容的话
那答案应该是 5...
38d4392beb95eee3a4b727373a710578de8f340551985c5180297c20ffffb82a
besto
2018-09-26 15:29:37 +08:00
@besto 哎呀错了错了,这样会忽略分号,无视无视
besto
2018-09-26 15:40:33 +08:00
@XiaoxiaoPu 有分号且程序有输出的确实可以到 9 4ccce30e94240276e8312a60e59f662783a24df6f5695e65d626196d2220c764
ysc3839
2018-09-26 16:18:28 +08:00
9, 05f1e6c363cd142e9b72dfa47079a743ebc336670ce1bf05a06e6f4568800e38

测试结果
> cl t.c && t.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.15.26730 for x64
Copyright (C) Microsoft Corporation. All rights reserved.

t.c
Microsoft (R) Incremental Linker Version 14.15.26730.0
Copyright (C) Microsoft Corporation. All rights reserved.

/out:t.exe
t.obj
00007FF78B881020
whoami9894
2018-09-26 16:32:42 +08:00
10,ptr => func
好像楼上有好几个一样的了
2c37e77354dad4539dde1674c773f95d73faba8e9011aaa0d864d49b7c9ed793
Phox
2018-09-26 16:33:19 +08:00
@XiaoxiaoPu 是的,不带换行的计算结果和你一样
@cjw1115 10 字符无告警,不带换行计算结果和你一样,但是输出(nil) 应该不算吧?
marvinGet
2018-09-26 16:50:09 +08:00
来个明白人结贴 说一下答案
yujincheng08
2018-09-26 17:01:51 +08:00
10, 2c37e77354dad4539dde1674c773f95d73faba8e9011aaa0d864d49b7c9ed793
hmzt
2018-09-26 17:03:58 +08:00
涨知识了,不过编译器为什么会支持这种写法,语法上完全不通

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/492705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX