我是javascript的自学者,我现在正在学习Paul Wilton所着的名为"Beginning javascript 3rd edition"的书.
到目前为止,我已经迈向第4章:Javascript - 基于对象的语言,我确实遵循并解决了本书中提供的练习.我试着自己编写一个计算器,通过修改和更改代码,每次我学习一些新东西来增强它.
如何才能成为javascript编码的好人?有什么特别的方法吗?我应该先学习一些概念或事物吗?我应该为javascript遵循什么样的学习/职业道路?我应该注意什么?
我真的有勇气继续学习javascript,我只需要一些指导.
我不介意给出任何专家意见,或指出有关这个问题的任何错误,因为我知道通过我的错误,我总是学到一些东西.
在搞乱代码时我遇到了这种相当模糊的行为,这是一个例子:
#include <iostream>
using namespace std;
int print(void);
int main(void)
{
cout << "The Lucky " << print() << endl; //This line
return 0;
}
int print(void)
{
cout << "No : ";
return 3;
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,带注释的语句//This line应该打印出来The Lucky No : 3,而是打印出来
No : The Lucky 3.是什么导致这种行为?这是否与C++标准有关,或者它的行为因编译器而异?
可能重复:
类如何拥有自己类型的成员,这不是无限递归吗?
代码:
public class Test2{
private Test2 subject = new Test2(); //Create Test2 object in Test2
private int num;
}
Run Code Online (Sandbox Code Playgroud)
问题:
为什么Java允许执行上面的代码,但C++不允许?
上面的代码是否创建了无限数量的对象?由于Test2它本身包含一个Test2对象,该对象又包含一个Test2本身具有Test2对象的对象等.
我只是想知道,我们可以在没有操作系统的机器上执行程序吗?
此外,我听说Linux内核是用C语言编写的,内核是在启动过程中运行的,所以我只是想知道计算机如何在没有编译的情况下理解该语言?
代码:
var num = 20;
if(num == "20")
{
alert("It works");
}
else
{
alert("Not working");
}
Run Code Online (Sandbox Code Playgroud)
问题:
在C编程中,我们有一个规则名称数据类型提升,当存在混合数据类型时(例如:添加整数和浮点),整数将在执行加法之前首先转换为浮点.
上面的代码将提示我一个警告框,"It works"其中显示的消息显示if测试条件评估为true.
对于松散类型的JavaScript,我只是好奇:有没有像C这样的规则决定在哪种情况下执行哪个转换?除此之外,上面的JavaScript代码num在进行比较之前将变量值从整数值转换为字符串值,反之亦然?
今天我又有一个奇怪的问题(至少对我而言).我正在尝试更多的指针和想法在我的脑海中引起如下:
int * firefoxmemory = (char*) 0x11111111 //this is just an example of address.
*firefoxmemory = 200;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我尝试访问firefox使用的内存(我使用内存编辑器查看地址),然后更改其对应的值.但是当我尝试这样做时,我的程序崩溃了.
为什么这会发生在我的程序中?是否有一些特殊的代码用于防止第三方程序篡改其内存?或者它是由Windows和英特尔硬件DEP完成的?
如果DEP阻止了上述操作,为什么某些内存编辑软件仍然有用,比如可以改变内存中值的作弊引擎?
代码如下:
#include <stdlib.h>
int num = 3; // Static external variable
int *ptr = #
int main(void)
{
int num2 = 4; // Automatic variable
int *ptr2 = &num2;
free(ptr); //Free static variable
free(ptr2); //Free automatic variable
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试编译上面的代码,它的工作原理,我很好奇free()功能是否能够释放静态变量和自动变量?或者基本上什么也没做?
守则如下:
#include <iostream>
using namespace std;
class Animal{
int a;
public:
Animal(int a) : a(a){}
int geta(){return a;}
};
class Bird : virtual public Animal{
string b;
public:
Bird(int a , string b) : Animal(a) , b(b){}
};
class Fish : virtual public Animal{
int f;
public:
Fish(int a , int f) : Animal(a) , f(f){}
};
class Unknown : public Bird, public Fish{
char u;
public:
Unknown(int a , int f , string b , char u …Run Code Online (Sandbox Code Playgroud) 码:
#include <stdio.h>
#define NEWLINE '\n'
#define SPACE ' '
int main(void)
{
int ch;
int count = 0;
while((ch = getchar()) != EOF)
{
if(ch != NEWLINE && ch != SPACE)
count++;
}
printf("There are %d characters input\n" , count);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
题:
一切正常,它将忽略空格和换行符并输出输入到屏幕的字符数(在这个程序中我只是将逗号,感叹号,数字或任何可打印的特殊符号字符,如&符号作为字符)当我点击EOF模拟是^z.
但是当我将这一行输入程序时出现了问题.例如,我输入:abcdefg^z,这意味着我在同一行之前和之后输入一些字符^z.程序将继续要求输入,而不是终止程序并打印出总字符.
EOF终止字符输入仅在我^z在一行上指定或通过这样做时才起作用:^zabvcjdjsjsj.为什么会这样?
今天我有一个奇怪的问题.
代码(C++)
#include <iostream>
union name
{
int num;
float num2;
}oblong;
int main(void)
{
oblong.num2 = 27.881;
std::cout << oblong.num << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
守则(C)
#include <stdio.h>
int main(void)
{
float num = 27.881;
printf("%d\n" , num);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题
众所周知,C++联合可以包含多种类型的数据元素,但一次只能包含一种类型.所以基本上name oblong只会保留一部分32位的内存(因为联合中最大的类型是32位,int和float),这部分可以保存整数或浮点数.
所以我只需要将值27.881分配给oblong.num2(如上面的代码所示).但出于好奇,我访问使用oblong.num指向相同内存位置的内存.
正如预期的那样,它给了我一个不是27的值,因为浮点数和整数在内存中表示的方式是不同的,这就是为什么当我oblong.num用来访问内存部分时它会把那部分内存值当作整数来解释它整数表示方式.
我知道这种现象也会在C中发生,这就是为什么我用一个值初始化一个浮点型变量然后用%d.So 读取它.我只是尝试使用27.881你在上面看到的相同值.但是当我运行它时,会发生一些奇怪的事情,那就是我在C中获得的值与C++不同.
为什么会这样?据我所知,我从两个代码到底得到的两个值不是垃圾值,但为什么我得到不同的值?我还使用sizeof来验证C和C++整数和浮点大小,两者都是32位.因此,内存大小不会导致这种情况发生,那么是什么促使这些值的差异?
c++ ×5
c ×4
javascript ×2
constructor ×1
cout ×1
eof ×1
free ×1
function ×1
integer ×1
java ×1
linux-kernel ×1
machine-code ×1
memory ×1
oop ×1
reference ×1
scope ×1
unions ×1