#!/bin/csh
@ cows = 4 - 3 + 1
echo $cows这个简单的csh脚本在运行时会产生"0“作为输出,而我期望的是"2”。
~root: csh simple.1
0我做了一堆检查,我能想到的唯一一件事是"-“被读作一元否定而不是减法,因此改变了运算符的优先级,并以4-4而不是2+ 1结束。如果是这样,为什么呢?如果是not...help!
编辑:所以它们是正确关联的!这些运算符在C中不是右结合的,对吗?C-Shell与C语言有什么不同吗?
发布于 2009-06-17 23:51:35
虽然您期望运算符保持关联,但它们是right associative in csh,因此它的计算结果为4-(3+1)
-
/ \
/ \
4 +
/ \
3 1发布于 2009-06-17 23:46:31
在csh中,+和-运算符是右结合的。这意味着'4 -3+ 1‘被评估为'4 - (3 + 1)’。
发布于 2009-06-17 23:45:32
运算符分组。它将操作读取为4- (3 + 1),而不是(4 - 3) + 1。
https://stackoverflow.com/questions/1010049
复制相似问题