标量与原始数据types – 它们是相同的东西吗?

在我读过的各种文章中,有时会提到基本的数据types,有时还会引用标量。

我对每一个的理解是,它们是像int,boolean,char等简单的数据types。

有什么我失踪,这意味着你应该使用特定的术语,或者只是可以互换的条款? 每个维基百科页面没有显示任何明显的。

如果条款是可以互换的,哪一个是首选的?

我不认为它们是可以互换的。 它们通常是相似的,但差别确实存在,似乎主要在于它们与上下文中的对比和相关性。

标量通常与化合物 (如数组,映射,集合,结构等)形成对比。标量是一个“单一”值 – 整数,布尔值,也许是一个string – 而化合物是由多个标量组成的其他化合物)。 在单个/简单/primefaces值和复合值之间的相关区别的上下文中使用“标量”。

然而, 原始types与例如引用types形成对比,当相关的区别是“这是一个值还是一个包含真实值的东西的引用?”时使用,如在Java的基本types与引用。 我认为这是一种比标量/复合更低层次的区别,但并不完全。

这真的取决于上下文(并且经常讨论什么语言族)。 采取一个,可能是病态的,例如:string。 在C中,一个string是一个复合(一个字符数组),而在Perl中,一个string是一个标量。 在Java中,一个string是一个对象(或引用types)。 在Python中,一切(概念上)都是对象/引用types,包括string(和数字)。

简而言之,似乎“标量”types是指单个项目,而不是复合或集合。 所以标量既包括原始值也包括像枚举值这样的东西。

http://ee.hawaii.edu/~tep/EE160/Book/chap5/section2.1.3.html

也许这个“标量”术语可能是C:

标量是包含单个值的原始对象,而不是由其他C ++对象组成

jtc1/sc22/wg21/docs/papers/1995/N0774.pdf

我很好奇这是否指这些项目是否具有“规模”的价值? – 如计数。

这些术语有很多混淆和误用。 通常用来表示另一个。 以下是这些术语的含义。

“本地”是指内置于语言中的types,而不是由库(甚至是标准库)提供,而不pipe它们是如何实现的。 Perlstring是Perl语言的一部分,所以它们在Perl中是本地的。 C提供了string的语义,指向使用库的字符指针,所以指向char的指针是本地的,但string不是。

“primefaces”是指不能再分解的types。 这是“复合”的反面。 复合材料可以分解为primefaces值或其他复合材料的组合。 本机整数和浮点数是primefaces的。 分数,复数,容器/集合和string是复合的。

“标量” – 这是混淆了大多数人的 – 是指可以表示比例(因此名称)的值,如大小,体积,数量等。整数,浮点数和分数是标量。 复数,布尔值和string不是标量。 primefaces的东西不一定是标量,标量的东西不一定是primefaces的。 标量可以是本地的,也可以是图书馆提供的。

有些types有奇怪的分类。 BigNumbertypes通常是以数字或整数数组的forms实现的,它们是标量的,但从技术上讲它们不是primefaces的。 如果实现处于隐藏状态,并且您无法访问内部组件,则它们可能会显示为primefaces。 但是组件只是隐藏的,所以primefaces性是一种幻觉。 他们几乎总是在图书馆提供,所以他们不是本地人,但他们可以。 例如,在Mathematica编程语言中,大数字是本地的,因为Mathematica程序没有办法将它们分解成它们的构build块,所以它们在这个上下文中也是primefaces的,尽pipe它们是在涵盖(你不再是Mathematica语言的世界)。

这些定义与所使用的语言无关。

我喜欢Scott Langeberg的回答,因为它是简洁的,并由权威链接支持。 如果可以的话,我会选举斯科特的答案。

我想“原始”数据types可以被认为是主要的数据types,所以辅助数据types是从主要的数据types派生。 派生是通过结合,如C ++结构。 结构可以用来组合数据types(比如int和char)来获得辅助数据types。 结构定义的数据types始终是辅助数据types。 主要数据types不是从任何东西派生出来的,而是在编程语言中给出的。

我有一个平行于原始的名词意思是主要的。 这个并行是“正则expression式”。 我认为“正规”的命名可以理解为“规范”。 因此你有一个expression式来调节search。

标量词源( http://www.etymonline.com/index.php?allowed_in_frame=0&search=scalar&searchmode=none )表示阶梯状。 我认为这与编程相关的方式是梯子只有一个维度:梯子的末端有多less梯级。 标量数据types只有一个维度,因此由单个值表示。

我认为在使用中,原始和标量是可以互换的。 有没有一个不是标量的,或者是一个不是原始的标量的例子?

虽然可以互换,但是基元是指数据types是其他数据types的基本构build块,并且基元不是由其他数据types组成的。

标量是指它有一个单一的值。 标量与math向量形成对比。 一个向量不是由一个单一的值来表示,因为(使用一种向量作为例子)需要一个值来表示向量的方向,而另一个值则需要表示向量的大小。

参考链接: http : //whatis.techtarget.com/definition/primitive http://en.wikipedia.org/wiki/Primitive_data_type

在C中,枚举types,字符以及各种整数表示形成一个更普通的types类,称为标量types。 因此,您可以对任何标量types的值执行的操作与整数相同。