刷知乎时给我推送了一条回答(为什么新兴语言普遍都是类型后置的?)
回答里面有个高赞评论
完整复制粘贴:
前置后置都没问题,只要别搞 C 那一坨狗屎。
前置:
int[42] x
(或[42]int x
)后置:
var x: int[42]
(或var x: [42]int
)狗屎:
int x[42];
肯定有人问,C 这写法不是很清晰么,为什么说它是狗屎。因为只有它会搞出
int (*[42])(int)
这种晦涩的东西,处理这种东西对做编译器的人、对写程序的人都是灾难。
评论区的高赞( 2025 年 2 月 3 日):
这叫类型弱置(狗头)
其实再早几个月已经有人在另一个条回答的评论区表达过“弱置”,然后有人造词“类型弱置”
https://www.zhihu.com/question/667841945/answer/3632646566
继续复制粘贴:
你跟我说,这种写法
void ( *signal(int signum, void (*handler)(int)) ) (int);
是
前置?
评论区( 2024 年 9 月 30 日):
a: fn()
后置
fn() a
前置
fn (*a)()
弱置
评论区( 2024 年 10 月 1 日):
类型弱置
以及充满了讽刺语气的( 2025 年 3 月 31 日):
fn (*a)()
外置
void ( *signal(int signum, void (*handler)(int)) ) (int);
是混合痔
这些谐音梗真是讽刺度溢出屏幕
读音“类型弱智”,4 个字表达“类型置位的方式是弱智”
同样的还有:外置(外痔)、混合痔(混合置)
正经来讲,其实这是类型中置,但看得出许多人觉得不爽
目前各个搜索引擎查找“类型弱置”都搜不出实际内容,看来知乎的这条提问,里面的各个留言首创了“类型弱置”这个词
1
Mithril 8 天前 ![]() 可能是我老了,已经懒得去取笑 C 语言的各种坑和烂梗了。
毕竟是一门 50 多岁的语言了,半个世纪前的很多东西现在看来没那么严谨,也毫无必要了。为了保证兼容性,也不会改。 但也不能证明在当时的环境下,这种选择是不对的,是值得被取笑的东西。 觉得不好不用它就是了。 |
2
shimanooo 8 天前
你以为 C:高级程序语言
实际上的 C:加强版汇编 |
![]() |
3
xuanbg 7 天前 ![]() 所以你懂高司令了吗?
高司令:你们总骂 Java 这也要管那也要管,其实我只不过预判了沙雕程序员的恶趣味而已…… |
![]() |
4
marcong95 7 天前
void ( *signal(int signum, void (*handler)(int)) ) (int);
形如这种形式的说不上是「类型中置」吧,变量名中置倒是说得过去。所以反而讽刺用的「外置」或者「混合置」反而是合理的~~ |
![]() |
5
wyntalgeer 7 天前
AI:有趣,爱看
|
![]() |
8
DOLLOR 7 天前 ![]() 借助 typeof ,可以把 C 改得更像前置类型了🐶
#define Array(T, SIZE) typeof(typeof(T)[SIZE]) #define Pointer(T) typeof(typeof(T) *) #define FP(RETURN, ARGS) typeof(typeof(RETURN)(*) ARGS) 效果 // int ai[10] Array(int, 10) ai; // int *pi Pointer(int) pi; // int (*pai)[10] Pointer(Array(int, 10)) pai; // int *api[10] Array(Pointer(int), 10) api; // void (*fp)(int) FP(void, (int)) fp; // int *(*fp2)(int *) FP(Pointer(int), (Array(int, 10))) fp2; // int (*afp[10])(int, int (*)(int)) Array(FP(int, (int, FP(int, (int)))), 10) afp; 是不是更清晰一点了🐶😂 |