为什么这段代码甚至可以编译? " + +"是什么意思?操作
static void RollDice()
{
Random dice = new Random();
int sides = 6;
int row = 1, col = 1;
while (diceM[row, col] >= sides && sides <= 20)
{
for (int k = 1; k <=8; k++)
{
int ones = 0;
for (int i = 1; i <= diceM[row, col]; i++)
{
int value = dice.Next(1, sides + 1);
if (value == 1)
ones++;
}
diceM[row + 1, col] = diceM[row, col] - ones;
sides += 2;
row++;
}
}
}
答案 0 :(得分:7)
没有+ +
运算符。有+
运算符(以一元和二元形式出现)和一个++
运算符,此处未使用。
其中每个都是二元+
运算符,后跟一个或多个一元+
运算符。
此:
c = c + + "d";
相当于
c = c + (+ "d");
此:
c = c + + + "d";
相当于:
c = c + (+ + "d");
或:
c = c + (+ (+ "d"));
等等。
答案 1 :(得分:2)
第一个+
是二进制加号,用于计算c
和第二个词的总和。
剩余的+
是一元加运算符。在+ "d"
中,"d"
的类型为const char[2]
,并且会衰减到const char*
。然后+
应用于无效的指针,并返回相同的const char*
。
c + + + "d"
相当于c + (+(+"d"))
。
答案 2 :(得分:1)
这只是很多一元的优点。