PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 一个 JavaScript 程式 改为 C++ 程式
楼主:
kikilalagirl
(kikilala)
2015-12-27 21:27:37
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC 4.6.3
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
怎么把 JavaScript 的程式码 , 改成 C++ ?
喂入的资料(Input):
无
预期的正确结果(Expected Output):
1
错误结果(Wrong Output):
main.cpp: In function 'int sub2()':
main.cpp:21:13: error: 'x' was not declared in this scope
cout << x <<endl;
^
程式码(Code):(请善用置底文网页, 记得排版)
JavaScript 原始码 (书本的范例,正确) => http://pastebin.com/pCgAwAym
C++ 原始码 (自己改写,错误) => https://repl.it/BafW/1
补充说明(Supplement):
用 Chrome 测试 JavaScript 原始码 会当掉
请用 IE 或 Firefox 来测试
作者:
NaiveRed
(天真红)
2015-12-27 22:15:00
你的x=1,他scope的范围只在sub1(),sub2()里不知道x还有就是你sub2()也没回传东西
作者:
stupid0319
(征女友)
2015-12-27 22:35:00
我来练习看看
https://repl.it/BafW/2
楼主:
kikilalagirl
(kikilala)
2015-12-27 23:29:00
@NaiveRed,我知道没宣告会这样,但是JavaScript可以?sub2()也没回传东西,想改成void sub2(),可是会错~所以就改成int sub2(),编译就通过了! x改成"Hello!"
https://repl.it/BafW/3
所以是真的有跑到sub2()里只是不懂JavaScript为什么可以跑出x=1,C++却不行呢?把int x设定全域变量,答案就是1了~但不是我要的~
作者:
LPH66
(-6.2598534e+18f)
2015-12-27 23:45:00
JS 的 scope 规则确实会把 sub1 的 x 带入 sub2因为 C++ 没有函式内函式这东西 (lambda 是语法糖, scope跟 JS 的 scope 是分开的), 所以并没有直接转成 C++ 的方法JS 在这里还会扯到 closure 的概念, 这并不是 C++ 有的东西
作者:
NaiveRed
(天真红)
2015-12-28 10:42:00
对不起 我不会JS QQ
楼主:
kikilalagirl
(kikilala)
2015-12-28 17:00:00
谢谢L大大的说明
作者:
holydc
(のヮの)
2015-12-28 21:36:00
closure 跟 lambda
http://ideone.com/Jzldmc
但我用 c++11 写不出 sub4... 求救
作者:
suhorng
( )
2015-12-28 21:42:00
用 std::function 牙
作者:
holydc
(のヮの)
2015-12-28 22:10:00
是没错啦,但想尽可能干净一些
作者:
suhorng
( )
2015-12-28 22:12:00
有 capture 其他东西的话就无法,除非手动写 struct不然总是得把型别擦掉
继续阅读
Re: [问题] 全域变量在C/C++的初始化
descent
[问题] 全域变量在C/C++的初始化
NaiveRed
[问题] 作业到底有没有需要讲解
zxcv4982543
[问题] CPP除错
mythology01
[问题] MSVC包Pthread的函式库
zelkova
[问题] C语言遇到错误讯息
Niener
[问题] 注解
GooLoo
[问题] xtion 执行非常缓慢
a98765s
Fw: [情报] 2016 Taiwan CodeWars by HPE & HPI 第四届正式开跑
yuntin
[问题] 读取电脑设定值请教?
titiru
Links
booklink
Contact Us: admin [ a t ] ucptt.com