递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库

为何常量用作参数时,常量值可以被修改?

查看数: 8077 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-6-27 01:40

正文摘要:

本帖最后由 朕的 于 2021-6-27 01:45 编辑 写了个mysql的扩展,搞半天没找到bug原因,最后原来是赋值的常量被修改了,后面的命令再调用此常量已经变了。后来才发现是常量被修改了。特意试了下易语言,易语言里常 ...

回复

伟业 发表于 2021-6-28 11:12:05
学习。。。。。
Xelloss0618 发表于 2021-6-28 00:42:33
看了下翻译的C++源码,文本型常量没有加上 const 关键词
整数和长整数常量有加上 const,不会被这种方法修改
文本型常量可能只是火山自身加了个语法检查,不能被直接赋值修改而已了,换成这种方法就检查不出了
logan0279 发表于 2021-6-27 23:00:07
试了下,真的是这样。
定义好的常量被传参修改了。。。 。。。
秋天的童话 发表于 2021-6-27 18:01:04
是有点奇怪,加上又是字符串,楼主看看基本数据类型会变化吗?
朕的 发表于 2021-6-27 14:48:03
创世魂 发表于 2021-6-27 13:27
参数相当于是个变量。所以这个时候输出的信息已经不是从常量输出了,而是从参数取这个数据。 ...

取值确实可以取,但为何能赋值成功就不知道了
朕的 发表于 2021-6-27 14:42:40
创世魂 发表于 2021-6-27 13:27
参数相当于是个变量。所以这个时候输出的信息已经不是从常量输出了,而是从参数取这个数据。 ...

也就是说,常量被用作参数时,可以被修改是合理的是吗?
朕的 发表于 2021-6-27 14:40:53
李先森 发表于 2021-6-27 08:07
火山或者c++调用方法(子程序)参数应该是引用传递,你试试执行mysql语句有个“错误信息”参数,就是提供一 ...

你说的是变量,变量是肯定可以被修改。这个说的是常量,常量被修改了
创世魂 发表于 2021-6-27 13:27:10
参数相当于是个变量。所以这个时候输出的信息已经不是从常量输出了,而是从参数取这个数据。
龙纹 发表于 2021-6-27 13:00:40
Xelloss0618 发表于 2021-6-27 12:15
C/C++ 的 const 常量只提供语法层面的保护,编译器会检查一些对常量进行修改的常规操作,但还有其他一些操 ...

按帖子中图片那样生成的代码并没有const,只是一个局部静态变量。所以修改是合法的,这里更像是语义的问题,他想要一个常量,编译器却只是生成了一个static修饰的变量。

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-29 07:18 , Processed in 0.091620 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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