2017-01-04 9 views
1

Cコード論理演算子と割り当て

#include <stdio.h> 

int main(void) { 
    int first = 10; 
    int second = 20; 
    int third = 30; 

    int x = ((first == second) || third); 

    printf ("%d", x); 
} 

Output: 1

Perlコード

#!/usr/bin/perl 
use strict; 
use warnings; 

my $first = 10; 
my $second = 20; 
my $third = 30; 

my $x = (($first == $second) || $third); 

print $x; 

Output: 30

なぜD oes Perlはこのように動作しますか?

+0

@ikegamiは '出力されません1'? –

+4

Perlopは 'The ||、//、&&演算子は評価された最後の値を返します。(Cの||と&&は0または1を返します)' – Dada

+0

@Dada Ohありがとう、ありがとう。 –

答えて

5

できます。 Cの論理演算子は、Cの型システムのためにPerlの缶と同じくらい有用なものを返すことができません。

を考えてみましょう:Cで

my $x = $arg || $default; 

を、あなたが書く必要があるだろう、私は理由を取得することができませんよ、より複雑

int x = arg ? arg : default;