我只是不知道,有什么技术原因吗?为弱键入的语言实现编译器是否更难?它是什么?
compiler-construction programming-languages interpreted-language
什么使语言强烈输入?我正在寻找强类型语言最重要的方面.
昨天我问PowerShell是否是强类型的,但是没有人能就"强类型"的定义达成一致,所以我想澄清这个定义.
随意链接到维基百科或其他来源,但不要只剪切和粘贴您的答案.
我一直认为C++是最强类型的语言之一.
所以我很震惊地看到本文的表3表明C++是弱类型的.
显然,
C和C++被认为是弱类型的,因为由于类型转换,人们可以将结构的字段解释为整数作为指针.
类型铸造的存在是否重要?这种演员的明确性是否无关紧要?
更一般地说,C++的弱类型是否真的被普遍接受?为什么?
我的目标是设置一个数据结构来存储我的应用程序的设置.
在PHP中我会写...
$settings = array(
"Fullscreen" => true,
"Width" => 1680,
"Height" => 1050,
"Title" => "My Application",
);
Run Code Online (Sandbox Code Playgroud)
现在我尝试在C++中创建一个类似的结构,但它还无法处理不同的数据类型.顺便说一句,如果有更好的方式存储这些设置数据,请告诉我.
struct Setting{ string Key, Value; };
Setting Settings[] = {
("Fullscreen", "true"), // it's acceptable to store the boolean as string
("Width", "1680"), // it's not for integers as I want to use them later
("Height", 1050), // would be nice but of course an error
("Title", "My Application") // strings aren't the problem with this implementation
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能的结构建模associative …
假设
第一个案例
int a;
int *p= &a ; it works no error
Run Code Online (Sandbox Code Playgroud)
第二种情况
long int a;
long int b;
b = & a; it wont work
Run Code Online (Sandbox Code Playgroud)
我们大多数人都说b是变量而不是指针.但请参阅下文.
所以问题是如果&a返回地址是无符号整数那么为什么我们不能将它分配给正常变量?但为什么只能指针?见下文
b = (unsigned int) &a ; it works after typecasting though its not practicable.
Run Code Online (Sandbox Code Playgroud)
如果地址是整数格式,那么为什么无符号或长整数不能保存呢?我在想,背后肯定有一些隐藏的秘密.有人可以透露吗?我的想法是,指针必须在里面做一些事情,但我想知道它会是什么以及为什么普通变量不能.
感谢您的所有答案,但实际问题究竟是什么&a回报?整数值与否?如果是整数,为什么变量不能保持呢?long int a = 65535\valid如果不是int a =&b,如果地址b的值是65535
我并不担心将它用作指针,请问的问题是保存价值.不要引用地址.人们说32或64位,我并不担心.如果地址是整数,为什么它不能保存地址?
我的意思是为什么我们不能分配值,我不是说指向变量的指针的属性,而只是分配它的值
a=65535
b = a \\ works it assigns b - 65535
&a=65535
b = & a \\ doesn't work, if address is a some …Run Code Online (Sandbox Code Playgroud) 我正在寻找确切的原因,为什么这个转换会在c ++上发出警告但不在c上发出警告.是否与c ++强类型和c弱类型有关?是因为c中的类型可以在运行时确定,所以编译没有指出警告?谢谢.