Closed. This question needs to be more focused. It is not currently accepting answers. Learn more。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
5年前关闭。
C语言与其它编程语言的交换性质
在C语言中,要引用字符串中的一个字符,大多数程序员通常会使用str[i]。
因此,如果他们需要str=“Hello World”时的第7个字符,他们将执行str[6]并获得
‘W’;
现在C语言实现了addtion的交换属性。所以声明
“i=4+9”的计算结果与“i=9+4”完全相同。为了弦,很多时候你
将看到上面的示例表示为“str+6”,好像有一个加法,并且
从某种意义上说,存在(将6添加到起始偏移量,该偏移量由“str”表示)。
在最后一个例子的基础上,由于交换性质,您可以
假设你也可以把它写成'6+str',它应该也会对它求值。以及
它确实做到了,没有任何问题或编译器警告。
现在是惊人的惊喜。
最后一个例子“6+str”的进一步扩展会让人相信,
如果交换性质在这里也确实起作用,则重写该示例
也应该有效,即eexpression:'6[str]'。
猜猜怎么着:它起作用了!
我检查了glibc/gcc(没有特殊标志)。
现在是我的问题。
有没有人知道一种语言使用字符串索引,这种语言表面上是
实现可交换属性,但在后者中重写的表达式
表单(经过必要的修改)不编译,或者它在哪里发出编译或运行时
警告还是错误?
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
5年前关闭。
C语言与其它编程语言的交换性质
在C语言中,要引用字符串中的一个字符,大多数程序员通常会使用str[i]。
因此,如果他们需要str=“Hello World”时的第7个字符,他们将执行str[6]并获得
‘W’;
现在C语言实现了addtion的交换属性。所以声明
“i=4+9”的计算结果与“i=9+4”完全相同。为了弦,很多时候你
将看到上面的示例表示为“str+6”,好像有一个加法,并且
从某种意义上说,存在(将6添加到起始偏移量,该偏移量由“str”表示)。
在最后一个例子的基础上,由于交换性质,您可以
假设你也可以把它写成'6+str',它应该也会对它求值。以及
它确实做到了,没有任何问题或编译器警告。
现在是惊人的惊喜。
最后一个例子“6+str”的进一步扩展会让人相信,
如果交换性质在这里也确实起作用,则重写该示例
也应该有效,即eexpression:'6[str]'。
猜猜怎么着:它起作用了!
我检查了glibc/gcc(没有特殊标志)。
现在是我的问题。
有没有人知道一种语言使用字符串索引,这种语言表面上是
实现可交换属性,但在后者中重写的表达式
表单(经过必要的修改)不编译,或者它在哪里发出编译或运行时
警告还是错误?
最佳答案
在C语言和标准库中都没有字符串类型
程序员将字符串抽象为char
因此,您的“字符串”是一个数组char[]
在C数组中服从pointer arithmetic
在C++等其他语言中,可以通过不为[]
类型提供string
运算符来实现与目标类似的结果。
关于c - C语言和其他编程语言的交换性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20339740/