数码之家

 找回密码
 立即注册
搜索
查看: 854|回复: 12

[C51] C语言数组的写法:6[s],也是可以的?

[复制链接]
发表于 2022-12-8 10:25:12 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ahyu99 于 2022-12-8 10:26 编辑

去年写的代码,现在想拿出来修改一下,增加一些显示的内容。
结果发现了原来的代码里面有一条语句吓我一跳。原来写的:

  1. 6[s] = 0;  // 字符串结束
复制代码

很显然我想写的是

  1. s[6] = 0;        // 字符串结束
复制代码

也不知道当时是不是脑袋抽了还是怎么了,居然写成了上面那种形式,而且当时也没有注意到,直到昨天才发现。
可是,Keil编译也没有错!结果也是正确的?!
我在网上搜索了一下,也没有发现什么有价值的线索。
哪位大婶来解释一下?这是怎么回事?
发表于 2022-12-8 11:07:07 | 显示全部楼层
没见过这样的写法,6是个变量吗?
回复 支持 反对

使用道具 举报

发表于 2022-12-8 11:24:43 | 显示全部楼层
试过keil c51、mdk、Visual Studio都可用编译通过,结果也正确。
回复 支持 反对

使用道具 举报

发表于 2022-12-8 11:32:56 | 显示全部楼层
C语言都还给老师了,这意思是S数组赋值0吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-8 12:39:36 | 显示全部楼层
本帖最后由 ahyu99 于 2022-12-8 12:41 编辑
时师傅 发表于 2022-12-8 11:07
没见过这样的写法,6是个变量吗?

本意是想写s[6] = 0;
结果写成 6[[ss]] = 0;

这个是单个的括号,但是输入单个括号,就出现删除线。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-8 12:42:11 | 显示全部楼层
alangxl 发表于 2022-12-8 11:32
C语言都还给老师了,这意思是S数组赋值0吧?

本意是想写s[6] = 0;
结果写成 6[[ss]] = 0;

这个是单个的括号,但是输入单个括号,就出现删除线。
回复 支持 反对

使用道具 举报

发表于 2022-12-8 15:12:22 | 显示全部楼层
我的keil不行,版本5.25.3 v9,报错
D.C(2): error C141: syntax error near '6'
D.C(2): error C129: missing ';' before ']'
回复 支持 反对

使用道具 举报

发表于 2022-12-8 22:22:10 | 显示全部楼层
恭喜你学会了一点C语言黑魔法。
想学更多可以买本人民邮电出版社的《征服C指针》。
你这个问题在书中第一章的1.3.3小节有详细说明。
回复 支持 反对

使用道具 举报

发表于 2022-12-9 16:40:39 | 显示全部楼层
它不是变量,变量以下划线 ,字母,开头,也没有预先定义。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-9 17:03:57 | 显示全部楼层
jjy1039 发表于 2022-12-8 15:12
我的keil不行,版本5.25.3 v9,报错
D.C(2): error C141: syntax error near '6'
D.C(2): error C129: miss ...

与编译器的版本有关?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-9 17:04:52 | 显示全部楼层
cmheia 发表于 2022-12-8 22:22
恭喜你学会了一点C语言黑魔法。
想学更多可以买本人民邮电出版社的《征服C指针》。
你这个问题在书中第一章 ...

我没有看过那本书,手头也没有那本书。麻烦你稍微解释一下?或者说拍张照片?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-9 17:08:30 | 显示全部楼层
在Debian Linux下,进行了测试:

  int i, a[] = {1,2,3,4,5,6,7,8,9};
  for(i = 0; i < 9; i++)
    cout << i[a];

这样也是可以的。C++的版本:
user@debian:~# g++ --version
g++ (Debian 8.3.0-6) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

回复 支持 反对

使用道具 举报

发表于 2022-12-9 17:46:01 | 显示全部楼层
好高深的样子学渣来看看
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-5-21 18:09 , Processed in 0.140400 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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