由买买提看人间百态

topics

全部话题 - 话题: 运算符
首页 上页 1 2 3 4 5 下页 末页 (共5页)
T*****e
发帖数: 361
1
其实perl的语法也没有太麻烦,麻烦的是那些鸡零狗碎的东西太多太灵活太简洁太无厘
头,使得一个问题的解决方案可以千奇百怪,而且总能在需要维护的脚本里看到自己看
不明白的东西。我用perl有十多年了,还是一团浆糊,总是被逼着学习(别人的代码)
,但不精通。不过对文本和list/hash的支持实在方便。
python用的不多——其实都被别人抢走了轮不到我,而我只能守着perl过日子——但是
python感觉好得多。
java是繁琐点,不过读起来改起来容易多了,写起来也算顺畅,除了framework多点,
没啥不满的。说不上多喜欢,但是算是挺舒服的。
scala初学很惊艳,但是api文档看不懂,特别是那些稀奇古怪的符号,感觉是对java不
能重载运算符的矫枉过正到了走火入魔的地步。不过还是准备再学点akka什么的,看看
能不能吐啊吐的习惯下来。妈的,弄个简明的方法替代一些不好记、不好读、反人类的
符号有那么难么!
h****g
发帖数: 772
2
x就是不在乎是0或1,输出都是x
1&x=x
0&x=x
1&1=1
1&0=0
0&1=0
0&0=0
S*A
发帖数: 7142
3
try overload __and__(self, other)
r****y
发帖数: 26819
4
不等宽的读起来觉得挤得慌,比如isr这几个字母凑在一起。特别是运算符,不等宽的太
难看了。
v*********o
发帖数: 5
5
来自主题: Programming版 - 除了类,c++和C区别在那?
C++是C的超集,也可以说C是C++的子集。
C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C程序中使用,尽
管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。
C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写
出来。而C++可以使用空参数列表。
C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。
标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。
C++中还增加了bool型变量和wchar_t型变量
C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。
C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。
在C语言中,输入输出是使用语句scanf()和printf()来实现的,而C++中是使用类来实现
的。
c++中引入了安全的类型转换机制
C++函数的原型中可以声明一个或多个带有默认值的参数。如果调用函数时,省略了相应
的实际参数,那么编译
m*******o
发帖数: 264
6
来自主题: Programming版 - 为什么不能成功排序
我重载了<运算符啊,所以类对象也应该可以进行比较啊
if ( *A[1] < *A[2] ) //test the operator whether works for
the object
cout << "yes" < else
cout << "no" << endl;
上面这段代码就说明<成功重载了啊
t****t
发帖数: 6806
7
来自主题: Programming版 - a string define question (c++)
鸡蛋里挑一下骨头,C语言运算符规定的其实是语义,而不是真正的运算顺序。
t*i
发帖数: 72
8
来自主题: Programming版 - 字符串变换的问题
我有一个字符串 "XYXYZ"
我先把它转化成两个二进制数 10100 (x代表1,y,z代表0)
01010 (y代表1, x,z代表0)
请问在c++里有什么比较简便的方法可以实现。
其实我是想用c++的为运算符对他们进行操作。我得笨办法就是把字符串替换成"10100", "01010",然后把它直接cast成二进制数。 但是我不知道这个cast的函数是啥,另外我觉得高手肯定有更有效率的方法。
X****r
发帖数: 3557
9
来自主题: Programming版 - 请问C语言里这个写法是什么意思
C语言里==运算符的值是一个为1或0的int,不是boolean。
C99以前也没有boolean这个类型。
h*****0
发帖数: 4889
z****e
发帖数: 2024
11
来自主题: Programming版 - 菜鸟求教,一个c++的困惑
试试这个。
#include
using namespace std;
int main(int argc, char* argv[])
{


char ca2[]={'c','+','+','\0'};
char* ip=ca2;
cout< cout< return 0;
}
我感觉是iostream里面对运算符<<的重载导致的。
t****t
发帖数: 6806
12
来自主题: Programming版 - 请推荐一本语言方面的C++书籍
本来语言方面的问题, 是要靠编程解决的, 但是没时间的话, 也可以看书
因为你有基础
所以推荐EC++
先把容易搞错的搞正确了
要认真的读, 要读得慢, 多想为什么
最好的读法是, 能在作者回答为什么之前先自己想想为什么, 不要偷看答案(所以要读
得慢)
inside c++ object model, 不是讲语言的问题, 是讲语言本身的实现, 为什么要这么
实现以及如何实现. 当然如果这些全明白的话, 相当于你能回答EC++里所有的为什么.
能到这个程度的话, 语言本身只是末节了.
C++的语言问题有几个比较重要的方面: 1, 表达式. 这包括运算符, side effect,
sequence point, temp object等等. 2, class. 包括virtual function, (virtual)
inheritence, access control, name lookup, initialization等等. 3, template.
包括所有template的内容--(partial) specialization, (explicit/implicit)
z****e
发帖数: 2024
13
来自主题: Programming版 - 请推荐一本语言方面的C++书籍
赶紧记下来,回去复习。嘻嘻嘻。

C++的语言问题有几个比较重要的方面: 1, 表达式. 这包括运算符, side effect,
sequence point, temp object等等. 2, class. 包括virtual function, (virtual)
inheritence, access control, name lookup, initialization等等. 3, template.
包括所有template的内容--(partial) specialization, (explicit/implicit)
instantiation, 等等. 4. STL, 主要是container和stream, 还有requirement和
complexity. string我感觉一般用用就可以了, algorithm和functional要了解.
大致就这么几个方面. 都明白就是大牛了.
z****e
发帖数: 2024
14
来自主题: Programming版 - c++ interview: iterator 和 pointer区别?
你说得那些我一句话就搞定了啊:
。。。usually you lose the pointer arithmetic(这个就包括你说的那些个运算符
重载了)。其他都是pointer arithmetic啊。
STL里边的iterator分类也不一定就必须是所有iterator的分类啊。
iterator不也是一种design pattern 么?
而且iterator 就是一种smart pointer 啊,这个也没错啊。
其实我也没答好,本来想多说一些,却说得有点过了,该详细说说的地方没有展开。
但是我没有什么原则性的错误啊,这些理解都是对的啊。
你说是吧。
z****e
发帖数: 2024
15
来自主题: Programming版 - c++ interview: iterator 和 pointer区别?
我没说iterator 绝对没有pointer arithmetic啊,要就自己overload。但是比如STL,
除了random access类型的,其他运算符都不全,所以我说"usually"也没说错啊。
iterator 不要求管理资源不代表不能管理资源啊。所以我也没说错啊。iterator本身
就是一种design pattern啊,你想让它作甚,就作甚啊。
iterator是smart pointer,我也没说错啊。关于什么是精确的smart pointer,不是现在还有标准的争论么? 我这里大致的用一下,就原则性错误了?
如果说iterator是naked pointer,没错,但是这个题目就没什么可答的了。
我还是觉得,我可能语言没有整理好,就是条理性差些,侧重点答的不好,
但是没有原则性错误。
以上你逐条批判的话,我也都防住了。
S****z
发帖数: 666
16
来自主题: Programming版 - 对STL的set比较熟悉的进来看看
自己定义的结构有两个东西,int ID, int scores
加元素的时候重新定义了它的 < 运算符,根据scores的值来排的
删除元素的函数希望只输入ID进行删除,
我死路是先查找到该ID,namely判断ID的值是否相等,进而进行删除,
但是貌似查找的时候我只给ID的值,scores的值随意的话,
set::find貌似不work啊,应该怎么着?
y*********e
发帖数: 518
17
来自主题: Programming版 - operator执行顺序
C++规范里面没有定义二元运算符的执行顺序。(a) + (b) 可以是先执行a,然后执行b
,然后再执行+;也可以反之,先执行b,然后再执行a,最后执行+。
所以你这个指令 b = a++ + ++a是undefined,不同的编译器可以有不同的理解或者优
化。
尽量避免这些undefined behavior。
再如,要避免int b = foo(++a, a)类似的语句,因为C++规范里面没有定义传递到foo
的参数是从左到右,还是从右到左。
s**********o
发帖数: 197
18
这个比喻太好了。相比C/C++,java。net更注重协同作战的能力。由于应用领域不同,
相同水平的程序员在C/C++的领域内会可能感觉更自由些。另外我最近学Java,感觉
Java对初学OOP的人来说比C++强许多。学Java一开始就能接触好多程序设计模式上的知
识,让你感觉不是在专门学某种语言,而是学编程本身。相反C++开始学的时候要了解
好多和语言相关的细节,一个运算符重载就可能扯出一堆内存分配效率的问题;可是当
你去写好多行程序的时候,很少人会follow当初学的那些细节问题,比如你在C++里写
new的时候根本不会去想你将来程序运行的系统是怎么地址对齐。但网上C++的教程和面
试问题又很喜欢和这些东西联系起来。
r*****3
发帖数: 143
19
来自主题: Programming版 - 《Python参考手册 (第4版)》[PDF]
中文名: Python参考手册 (第4版)
原名: Python Essential Reference, 4th Edition
别名: Python
作者: (美)比兹利
译者: 谢俊
杨越
高伟
图书分类: 软件
资源格式: PDF
版本: 扫描版
出版社: 人民邮电出版社
书号: 9787115242594
发行时间: 2011年
地区: 大陆
语言: 简体中文
简介:
经典著作全面升级
Python程序员案头必备
涵盖Python2和Python 3共有特性
内容简介
本书是python 编程语言的权威参考指南,书中详尽解释了python 核心语言和python
库中最重要的部分,涉及类型和对象、操作符和表达式、编程结构和控制流、输入和输
出、测试、调试等,也包括一些python官方文档或其他参考资料中未提及的高级主题。
本书面向python 程序员,或有其他编程语言经验的开发人员。
本书是权威的python语言参考指南,内容涉及核心python语言和python库的最重要
部分。本书内容简洁扼要、可读性强,书中还包括了一些没有在python官方文档或其他
资料中出现过的一些... 阅读全帖
N**********d
发帖数: 9292
20
来自主题: Programming版 - 问个缺少逗号的数组赋值问题
果然。。。
cout << m_ColumnName[1].substr(4,8) << endl;
输出就是last_one了
那为什么会这样合并呢?他们之间好像也没什么运算符呀?
t****t
发帖数: 6806
21
来自主题: Programming版 - 紧急求助—寻C++ tutor
我当然不清楚你将来的需要. 不过呢, 随便找一找你发的贴, 去年11/30你连运算符的
优先级都没搞清楚...如果你说这也能算"需要学的也学得差不多了", 那我没话说, 不
过我觉得那也没必要找什么tutor.
做了三年的题, 运算符的优先级都不知道, what can i say. "Wow!"

E
t****t
发帖数: 6806
22
来自主题: Programming版 - 紧急求助—寻C++ tutor
http://mitbbs.com/article_t/Programming/31211875.html
不是说他优先级那张表背不下来, 背不下来是可以理解的. 而是他根本没有运算符有优
先级这个概念. 这个就比较离谱了.
j*******e
发帖数: 674
23
来自主题: Programming版 - 紧急求助—寻C++ tutor
我靠,我连小学生都不如.
要是有公司面试我运算符优先级,我马上抬屁股走人.
考茴香豆有几种写法的公司,给我offer我都不会接.
a****l
发帖数: 8211
24
来自主题: Programming版 - 紧急求助—寻C++ tutor
要是我遇到这种公司,我会告诉他们如果我是经理我会把写这种把一堆运算符堆一起的
程序员臭骂一顿,责令立刻纠正并且以后不准再犯.
j*******e
发帖数: 674
25
来自主题: Programming版 - 紧急求助—寻C++ tutor
不是对被面者的侮辱,而是面试的人变态。
那些犄角旮旯的东西平时根本用不着,不是手熟的问题。正好相反,工作几年的人知道
那些有用,哪些用不着。各种新技术曾出不穷,根本没工夫去搞定那些犄角旮旯。倒是
新毕业的学生,为了应付面试,面经读了不少,各种偏门左道搞得门清。
就说楼上那个运算符优先级,加个括号会死人啊?可读性,可维护性都差。就算你优先
级了然于胸,但有可能某天你脑筋短路,或者别人读你code出错。故意让code模糊,来
考别人,不是变态是什么?
G***l
发帖数: 355
26
来自主题: Programming版 - C# is light-years ahead of Java now
Java里Generics只不过是语法糖,JVM并不支持Generics。在Java里,你用一个
ArrayList,只是编译的时候检查你有没有把不是T的东西放进去,在runtime的时候
那个还是普通的ArrayList,你从里面拿出来的东西都要做type cast成T。
C#不一样,Generics只是是build in在CLR里的。List就是在runtime的时候也带有T
的信息,不需要cast。简单来说,编译的时候代码里用的不同generic class会被编译
城不同的class,这个机制跟C++的template很像。
Hejlsberg说C#更像C++而不是Java还是有一定道理的,C#可以说是采取了Java优点的C+
+,像Java来的包括简洁的语法,VM和GC,safety,丰富的类库等等。而像delegate,
generic,value type/reference type,运算符重载这些语言角度的东西都来自C++。C#
也有指针,不过用的很少。

What
t****a
发帖数: 1212
27
呵呵,你仔细看了,真不错。
我的看法是,第一种涉及到”翻译”的过程,而第四种不需要。这意味着第一种没有扩
展性。
非法操作符比如非二元运算符代入op应该由编译器或者解释器自己去搞定,第四种就是
这么干的。
z*******3
发帖数: 13709
28
来自主题: Programming版 - scala 真是一个无法无天的糟货
都在扯淡
这些代码你给真正需要fp的人去看
没几个真爱看的
函数化不是说长得象函数或者说看上去少写点代码就算是进步
早就说过了,这里比来比去,就知道比代码量,弱到爆
真需要fp的是因为最近大数据盛行,所以对于统计等数学工具的需求也就上升了
但是要想写出适合搞数学那群人适合的语言
最迫切需要改掉的是^这个位运算符
你随便抓个搞数学的过来,问他2^2结果是什么
他要是回答是0,那才见鬼,目前这些所谓的fp,没有几个真认识到这些需求的
都是自己搞一套标准,然后出来忽悠,实际上这个东西就跟文言文一样
又难阅读又难维护,最后这些乱七八糟的语法自己能不能剩下,语言作者自己都不能保证
实际上如果真有那么光明的前景,现在应该已经普及开来了
就像当初java,一诞生,马上就流行开来一样,很容易就看出前景
如果现在还停留在小众语言的话,那十年之后回头看,估计还是小众语言
实际上大多数一个公司支持的语言,最后都难逃小众的下场,一辈子小众下去
fp也许是将来一个不错的方向,但是目前这些语言,大多数都还只停留在概念阶段
可能真正能够占领市场的fp,现在还没出现
当然就像java出现之前,c出现之后,出现的一堆乱... 阅读全帖
d****i
发帖数: 4809
29
来自主题: Programming版 - scala 真是一个无法无天的糟货
哈哈,主要还是FP粉喜欢说往脸上贴金说FP接近数学,所以搞了一些奇怪的符号,弄得
人不像人,鬼不像鬼的,普通程序员读了困惑,数学家读了更困惑。但是C, Java等传
统的计算机语言,从一开始定位就是给计算机用的编程语言,从来没有说和数学有任何
关系,所以所有符号都是计算机用符号,包括^位运算符,这个就是实实在在的计算机
符号。而数学上用来表示XOR的符号是oplus(LaTex)这样的符号,所以完全没有任何关
系,只要不要往数学上扯。
t****t
发帖数: 6806
30
第二个括号只是个运算符而已.
r*g
发帖数: 3159
31
我是对数组overload运算符>>,然后打印到屏幕或者csv随意。
n*****t
发帖数: 22014
32
来自主题: Programming版 - 。想转java了 求教
请把运算符去掉
g*****g
发帖数: 34805
33
来自主题: Programming版 - 王垠的这篇写的不错
我老读大学时候做作业,做不限长的整数的加减乘除法。拿C++做了运算符重载,觉得
自己很牛逼。
回过头来一看,别人就是pascal写的很土的 add/minus,也没见可读性哪里不好了。

词。
w********e
发帖数: 8594
34
来自主题: Programming版 - 大牛们能不能把语言整合一下?
业余人士一枚。偶尔用不同的语言做点小事。我说这不同语言能不能把一些基本的东西
统一统一?比如几个逻辑运算符,这个用“and",那个用“&”,真的是没有必要。我看
语言界也需要出个秦始皇。
建议大年们回国了牵头搞个中国的行业标准。任何语言要进中国,必须遵守这些规定。
反正中国政府管得宽,不怕独裁的骂名。这样说不定可以加
快中国IT业的发展呢。
z****e
发帖数: 54598
35
来自主题: Programming版 - 大牛们能不能把语言整合一下?
楼主说的很有道理
位运算符的确没有必要
完全可以抽象出来
r等其他语言就是*^当成乘和乘方用
现在忙的都是简化这些语言
更贴近其他人的需要,所以才会有renjin这些
c*******9
发帖数: 9032
36
来自主题: Programming版 - 早就说了,java+python就是将来
纯C少吧,
没运算符重载看着不舒服。
N******K
发帖数: 10202
37
这个直接决定了拿java直接做线性代数运算会效率很低
再加上没有运算符重载
决定了java不适合做算法类的程序 比如图像分析 模式识别 统计学习等等
p*********r
发帖数: 40
38
对于signed type, 比如signed int
右移还好说,补的是符号位
但是左移的时候完全有可能把符号位正负改变啊
比如二进制的 1001, 本来是-7
1001 << 2 变成了 0100,这就是4了
好像有点不合理,比如说用移位来代替除法的时候得到的结果就会错了
究竟怎么回事呢?
p***o
发帖数: 1252
39
乘溢出,左移哪来的除法
g*********e
发帖数: 14401
40
移位就是移位 能不是代替乘除法不是移位需要take care的,而是写程序的人需要
考虑的。
x****k
发帖数: 2932
41
如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid latine dictum sit, altum sonatur.
(随便用拉丁文写点啥都会显得高大上。)
想挫败维护代码的程序员,你必须先明白他的思维方式。他接手了你的庞大程序,没有
时间把它全部读一遍,更别说理解它了。他无非是想快速找到修改代码的位置、改代码
、编译,然后就能交差,... 阅读全帖
o**o
发帖数: 3964
42
来自主题: Programming版 - C++糟粕和需要避免的。
运算符重载的确是以辞害意,over engineering。
c*******9
发帖数: 9032
43
来自主题: Programming版 - C++糟粕和需要避免的。
运算符重载是好东西,不然有些表达式长的没法看。
L*D
发帖数: 49
44
来自主题: Programming版 - 今天给c++震惊了
lz没搞懂什么是rvalue。书上那段话是没错,rvalue的.运算结果还是rvalue。
但是你给的例子*p就不可能是rvalue,所以(*p).也不可能是rvalue。
下面这种例子才.运算符返回rvalue:
struct a {
int x;
};
int main()
{
int x = ((a){1}).x; //((a){1}) is rvalue, so ((a){1}).x is also rvalue
// ((a){1}).x = 2; // this is wrong, cannot assign to rvalue
}
N******K
发帖数: 10202
45
来自主题: Programming版 - 为什么我觉得c++比java简单?
运算符不能重载 数组连续存贮不保证 这才是致命的 oop还好
z****e
发帖数: 54598
46
来自主题: Programming版 - go几天的一些感受
作为论据,我找到了中文的翻译,但是那个youtub链接失效了
Go语言之父谈Go:大道至简
时间:2012-07-05 15:40 作者:王然
导读:这篇文章是Google首席工程师、Go语言之父Rob Pike自己整理的6月21日在旧金
山给Go SF的演讲稿。Rob提到:Go语言本是以C为原型,以C++为目标设计,但最终却大
相径庭。值得一提的是,这3门语言都曾当选TIOBE年度语言。
几个礼拜之前我被问到:“对于Go语言,最令你惊讶的是什么?”当时我就明确地给出
了答案:“虽然我希望C++程序员能够使用Go作为替代拼,但实际上大部分Go程序员都
是从Python和Ruby转过来的,其中却少有C++程序员。”
我、Ken以及Robert都曾是C++程序员,在我们编写软件时觉得应该设计一门更适合解决
这个问题的编程语言。奇怪的是,其他程序员似乎却不关心。
今天我将说说是什么让我们决定创造Go语言的,及其出乎意料的结果。这里我谈的更多
的会是Go而不是C++,所以即使你不懂C++也没关系。
主旨可以简单地总结为:你更同意Less is more还是Less is less?
这里有一个... 阅读全帖
l*****y
发帖数: 58
47
会自动聚合的操作符重载或宏
我们通常会有一些数据有比较复杂的结构.
data A,B,C,D,R ;
它们之间的运算仅仅是遍历所有数据成员,对每个数据成员进行运算。 那这种操作符
重载后的运算
R = A + B
实质上是
for_all_units {
R(id) = A(id) + B(id)
}
而 R = A + B - C
实质上是
for_all_units {
tmp(id) = A(id) + B(id)
}
for_all_units {
R(id) = tmp(id) - C(id)
}
当多个这样的运算符联立时,即使是用 -O2 之类的优化编译,遍历所有单元的操作会
重复多次。 有没有什么成熟的design pattern 或 可以自动合并的宏定义之类, 可以
自动实现将
R = A + B - C - D
编译成
for_all_units {
R(id) = A(id) + B(id) - C(id) - D(id)
}
谢谢
f*******t
发帖数: 7549
48
来自主题: Programming版 - 看来Go很有潜力
不能简单评价是缺点还是优点。Go的理念是语法必须简单,让码工写起来恶心,但不容
易写出无法维护的代码。不支持generic隐含的意义是强迫码工断绝让一段代码支持多
种类型的念头。写lib是一回事,而对app来说这显然是有利的。一段business logic如
果只处理int,出错的概率显然比既支持int又支持string小。
某种程度上generic可以通过interface实现,但实践中它主要用来做DI,test时注入
mock组件。
真正的generic语义,比如自带的sort package,很不顺手,确实不如fancy的新语言“
简洁”。我不认为这完全是坏事。swift写个运算符就能当匿名函数用,简化到极致,
但我总觉得哪里不对劲
p*****2
发帖数: 21240
49
来自主题: Programming版 - Go什么时候可能支持Generic?
看看fan神的观点吧
Go的理念是语法必须简单,让码工写起来恶心,但不容
易写出无法维护的代码。不支持generic隐含的意义是强迫码工断绝让一段代码支持多
种类型的念头。写lib是一回事,而对app来说这显然是有利的。一段business logic如
果只处理int,出错的概率显然比既支持int又支持string小。
某种程度上generic可以通过interface实现,但实践中它主要用来做DI,test时注入
mock组件。
真正的generic语义,比如自带的sort package,很不顺手,确实不如fancy的新语言“
简洁”。我不认为这完全是坏事。swift写个运算符就能当匿名函数用,简化到极致,
但我总觉得哪里不对劲
g****t
发帖数: 31659
50
来自主题: Programming版 - lua里面实现点乘
回到楼主的主题。如果是我,我会用emacs写文本预处理。
处理后再送到后一步。
例如你自己定义的点乘符号是 A***B
那么自动在每个地方把 A***B 替换成f(A,B)完事
你不用函数,要重载运算符就是为了写着方便吧?
首页 上页 1 2 3 4 5 下页 末页 (共5页)