n3337.pdf草案5.3.1.8规定:
一元运算
-符的操作数应具有算术或无范围的枚举类型,结果是其操作数的否定.对整数或枚举操作数执行整体提升.通过从2ⁿ减去其值来计算无符号数量的负数,其中n是提升的操作数中的位数.结果的类型是提升的操作数的类型.
在某些情况下,这就足够了.假设unsigned int是32位宽,那么(-(0x80000000u)) == 0x80000000u,不是吗?
不过,我找不到关于无符号0x80000000上的一元减号的任何内容.此外,C99标准草案n1336.pdf,6.5.3.3似乎没有提及:
一元运算符的结果是其(提升的)操作数的否定.整数提升在操作数上执行,结果具有提升类型.
UPDATE2:我们假设unsigned int是32位宽.所以,问题是:C中的一元减号(有符号和无符号),以及C++中的一元减号(仅限签名)?
UPDATE1:运行时行为和编译时行为(即常量折叠)都很有趣.
我正在阅读一篇关于C++ vs C的文档.文档说C++与C相比是紧密编写的.一个例子是,C允许main()函数类型为void.另一方面,C++不允许这样做,他从标准中给出了以下声明.
在C++标准中:
它的返回类型应为int,否则其类型是实现定义的.所有实现都应允许以下两个主要定义:
Run Code Online (Sandbox Code Playgroud)int main() { /* … */ }和
Run Code Online (Sandbox Code Playgroud)int main(int argc, char* argv[]) { /* … */ }
C标准说的相同,但有一个额外的声明.
如果返回类型与int不兼容,则未指定返回到主机环境的终止状态
这表明允许不返回int的表单是故意的.
如果您有"可以实现定义的类型"的语句,您是否不允许C++编译器实现社区允许void作为类型?
我在一家开发公司,开发中小型基于Web的项目,我们主要使用Microsoft技术,目前我们处于技术选择阶段,我们正在研究ORM,我们需要为未来选择标准ORM项目,目前我们将选择范围缩小为两个: -
•Nhibernate: -
•EntityFramework: -
该技术分别按以下方法测量: -
我的问题选择针对Nhibernate的实体框架,作为我们公司未来的ORM默认实现,从长远来看,这样的决定有什么缺点和优点?
别误会我的意思; 我知道Nhibernate暂时是正确的答案,但它是不久的将来,甚至远期未来的正确选择,考虑到EntityFramework的快速发展.
我依赖的一些资源用于研究: -
http://ayende.com/blog/4351/nhibernate-vs-entity-framework-4-0
http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx
我想找出在VB.Net语法中使用(Me)关键字的标准或首选方法.
目前我知道3种使用方法(Me).
没有(Me)关键字:
Cursor = Cursors.WaitCursor
RadioButtonSortBySurname.Checked = True
LightGrid.SortColumn(2)
LightGrid.Columns(2).LastSortState = Ascending
LightGrid.SortColumn(1)
LightGrid.Columns(1).LastSortState = Ascending
Cursor = Cursors.Default
LightGrid.StatusRowText = ""
LightGrid.Select()
Run Code Online (Sandbox Code Playgroud)
(Me)在Using结构中:
Using Me
Cursor = Cursors.WaitCursor
RadioButtonSortBySurname.Checked = True
LightGrid.SortColumn(2)
LightGrid.Columns(2).LastSortState = Ascending
LightGrid.SortColumn(1)
LightGrid.Columns(1).LastSortState = Ascending
Cursor = Cursors.Default
LightGrid.StatusRowText = ""
LightGrid.Select()
End Using
Run Code Online (Sandbox Code Playgroud)
在每个控件上使用(Me):
Cursor = Cursors.WaitCursor
Me.RadioButtonSortBySurname.Checked = True
Me.LightGrid.SortColumn(2)
Me.LightGrid.Columns(2).LastSortState = Ascending
Me.LightGrid.SortColumn(1)
Me.LightGrid.Columns(1).LastSortState = Ascending
Cursor = Cursors.Default
Me.LightGrid.StatusRowText = ""
Me.LightGrid.Select()
Run Code Online (Sandbox Code Playgroud) 我正在编写与我自己设计的电子设备进行通信(通过串口)的应用程序.
当我的PC应用程序启动时 - 它会逐个打开可用的COM端口并发送一些字符串(例如,"你是什么?").
我的设备被编程,用自己的ID回复那个"魔术问题"(例如:"我是监督员工的邪恶设备").
当我的PC软件收到"魔术回复"时,它开始正常工作,而不再搜索其他端口.
当然我不是在数据传输中使用愚蠢的问题,这只是一个例子.
问题是 - 我可以发送所有(非忙)端口上的字符串来发现我的设备吗?
如果我可以 - 那个"问题"字符串应该如何?有没有标准化的标准?
这不是我桌面上的第一个这样的项目,但现在我正在为小行业开发解决方案,我需要更加关注我的应用程序正在做什么,因为可能有其他设备连接到COM端口而我不知道他们怎么能反应.
对不起,如果我犯了一些语言错误,英语是我的第三语言.
在此先感谢您的回复.
可能重复:
在C++标识符中使用下划线有哪些规则?
我对标准中的相关部分感兴趣(如果有的话).
我知道UTF-16有两种类型的endianness:big endian和little endian.
C++标准是否定义了std :: wstring的字节顺序?或者它是实现定义的?
如果它是标准定义的,那么C++标准的哪个页面提供了有关此问题的规则?
如果它是实现定义的,如何确定它?例如在VC++下.编译器是否保证std :: wstring的字节序严格依赖于处理器?
我必须知道这一点; 因为我想将UTF-16字符串发送给其他人.我必须在UTF-16字符串的开头添加正确的BOM以指示其字节顺序.
简而言之:给定一个std :: wstring,我该如何可靠地确定它的字节序?
有谁知道这两个标准之间的区别(实际上它们看起来是等效的)?
谢谢。
更准确地说,我已经从它们的网站上下载了这两个文档,如果您阅读索引,它们似乎是等效的。
有人告诉我你可以替换以下代码:
private string name;
public string Name
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
以下内容并没有任何不良影响:
public string Name;
Run Code Online (Sandbox Code Playgroud)
我意识到,像第一个例子中那样设置的属性与我删除它并设置原始属性时的属性几乎相同,public但是对于你需要的属性的第二种方式是不好的编程习惯基本的吸气剂和二传手?
我处于可能有机会向一些学生教授C的情况.大学希望教他们纯c而不是c ++,以保持高级c ++课程的独立性.
由于c ++是从c派生的,是否有一个官方的"c规则",其中包含c的所有功能,但没有c ++功能?我想知道的原因是我可以查看我需要教给学生的东西.
我曾经看过c ++标准的(2000页?)手册.即使现在是20/30岁,c也存在这样的事情吗?
此致,Ed
编辑:我应该指出,我已经很好地了解了C/C++ 3年.我唯一不知道的是"正式"C是什么,什么是"正式"C++.这是我的目标,所以我可以给其他学生一个比我自己更好的教育.
standards ×10
c++ ×4
c ×3
.net ×1
c# ×1
c++11 ×1
coding-style ×1
endianness ×1
javascript ×1
keyword ×1
nhibernate ×1
protocols ×1
serial-port ×1
string ×1
syntax ×1
unicode ×1
vb.net ×1