Visualg Resultado booleano?

Eu fiz isso no visualg

algoritmo "semnome"
var
inicio
se 3 = "a" entao
   escreva("igual")
senao
   escreva("diferente")
FimSe
fimalgoritmo

e não entendi por que a condição retorna verdadeira

Na real, está bem estranho isso.
A princípio, a comparação de qualquer inteiro com qualquer literal sempre retorna verdadeiro.
Pode ser um bug do visualg.

é um BUG, não confere se os dados são do mesmo tipo e retorna verdadeiro para todas as comparação igual exemplo citado na sua.

se colocar:

Algoritmo "semnome"
// Disciplina  :  [Linguagem e Lógica de Programação] 
// Professor   : Antonio Carlos Nicolodi 
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 07/04/2017
Var
// Seção de Declarações das variáveis 

c: caractere

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
c <- "a"
se "3" = c entao
   escreva("1")
senao
   escreva("0")
fimse

Fimalgoritmo

ele verifica corretamente caso contrario dá o que acontece no seu exemplo …

BUG, ou alguma limitação!

Bem observado, @Dragoon!
É importante lembrar que o visualg não é uma IDE e nem está suportando nuances específicas de uma ou outra linguagem de programação (embora rode sobre uma estrutura muito limitada de pascal, se não me engano, de onde, inclusive, tira várias de suas características).
Eu também havia testado o código com variações, por exemplo

Algoritmo "semnome"

Var

comp : logico
Inicio

comp <- 3 = "a"
se comp entao
   escreva("igual")
senao
   escreva("diferente")
FimSe
Fimalgoritmo

O mais incrível é que a variável comp fica com o valor de “a”, logo após a atribuição da comparação.

Muito obrigado pessoal pelas resposta