趣味题:考考你的Delphi基础,该怎么处理
趣味题:考考你的Delphi基础
活跃一下D版的气氛,出个趣味只是题。
下面的代码中,定义了一个记录类型,定义了2个同名的方法(同不同名无所谓),v1和v2的x字段都初始化为10,分别调用2个方法后。提问:
1、v1.x与v2.x的值分别为多少?(要求不要在机上测试)
2、加入从记录定义中去掉y字段,v1.x与v2.x的值又分别为多少?(要求不要在机上测试)
3、为什么会是这样的结果?希望大家讨论。
------解决方案--------------------
发现自己的基础不是一般地差:)
口算的一个都不对:(
------解决方案--------------------
v1.x 1
v2.x 11
不知道对不对
------解决方案--------------------
1、值相同;
2、值不同;
3、为什么呢?期待高人回答...
------解决方案--------------------
sdfdsfsdgdfgfdgfdgfdgfd
------解决方案--------------------
jjjjjj
------解决方案--------------------
口算:值没变吧.
沉默中...
------解决方案--------------------
讲的不错非常有价值!
------解决方案--------------------
原来真的很差..
------解决方案--------------------
原来真不行
------解决方案--------------------
绕晕了
1.都是11?
2.不变?
3.难道没有参与计算的Y字段也影响结果?
------解决方案--------------------
1 结果都是11
2 v1 结果随机 v2 结果11
v1是局部变量的时候是直接把v1当result的
如果改成全局变量result是栈中的另一块地址 返回后再赋值给v1 这样的话就得到随机的值了
当v1只有一个integer的字段的时候 好像就没有特殊处理
------解决方案--------------------
不都是11吗?
------解决方案--------------------
v1 := IncX;
这样的赋值?
没见过
------解决方案--------------------
不会啊
------解决方案--------------------
不错哦
------解决方案--------------------
学习
------解决方案--------------------
很不错支持一下哈哈
------解决方案--------------------
v1 := IncX;
这样的语句不懂,
偶是delphi新手
------解决方案--------------------
不用说了,请楼上马上结贴,回答!
------解决方案--------------------
等100楼
------解决方案--------------------
此贴很好,很强大。
------解决方案--------------------
支持下,不会
------解决方案--------------------
1.都是11?
2.不懂y怎么影响的。
------解决方案--------------------
buhui
------解决方案--------------------
以前看到过一个“为什么对象不创建也能用”的问题,可能跟那个问题原因差不多。
等楼主解释。。。
------解决方案--------------------
活跃一下D版的气氛,出个趣味只是题。
下面的代码中,定义了一个记录类型,定义了2个同名的方法(同不同名无所谓),v1和v2的x字段都初始化为10,分别调用2个方法后。提问:
1、v1.x与v2.x的值分别为多少?(要求不要在机上测试)
2、加入从记录定义中去掉y字段,v1.x与v2.x的值又分别为多少?(要求不要在机上测试)
3、为什么会是这样的结果?希望大家讨论。
- Delphi(Pascal) code
type TTest = record x: Integer; y: Integer; end; procedure IncX(var v: TTest); overload; begin Inc(v.x); end; function IncX: TTest; overload; begin Inc(Result.x); end; var v1, v2: TTest; begin v1.x := 10; v2.x := 10; v1 := IncX; IncX(v2); end;
------解决方案--------------------
发现自己的基础不是一般地差:)
口算的一个都不对:(
------解决方案--------------------
v1.x 1
v2.x 11
不知道对不对
------解决方案--------------------
1、值相同;
2、值不同;
3、为什么呢?期待高人回答...
------解决方案--------------------
sdfdsfsdgdfgfdgfdgfdgfd
------解决方案--------------------
jjjjjj
------解决方案--------------------
口算:值没变吧.
沉默中...
------解决方案--------------------
讲的不错非常有价值!
------解决方案--------------------
原来真的很差..
------解决方案--------------------
原来真不行
------解决方案--------------------
绕晕了
1.都是11?
2.不变?
3.难道没有参与计算的Y字段也影响结果?
------解决方案--------------------
1 结果都是11
2 v1 结果随机 v2 结果11
v1是局部变量的时候是直接把v1当result的
如果改成全局变量result是栈中的另一块地址 返回后再赋值给v1 这样的话就得到随机的值了
当v1只有一个integer的字段的时候 好像就没有特殊处理
------解决方案--------------------
不都是11吗?
------解决方案--------------------
v1 := IncX;
这样的赋值?
没见过
------解决方案--------------------
不会啊
------解决方案--------------------
不错哦
------解决方案--------------------
学习
------解决方案--------------------
很不错支持一下哈哈
------解决方案--------------------
v1 := IncX;
这样的语句不懂,
偶是delphi新手
------解决方案--------------------
不用说了,请楼上马上结贴,回答!
------解决方案--------------------
等100楼
------解决方案--------------------
此贴很好,很强大。
------解决方案--------------------
支持下,不会
------解决方案--------------------
1.都是11?
2.不懂y怎么影响的。
------解决方案--------------------
buhui
------解决方案--------------------
以前看到过一个“为什么对象不创建也能用”的问题,可能跟那个问题原因差不多。
等楼主解释。。。
------解决方案--------------------