Fortran logical boolean byte size
Fortran compilers typically use 4 bytes for logical while C compilers usually use 1 byte for bool. For C interoperability, Fortran can use:
use, intrinsic :: iso_c_binding
logical(kind=C_BOOL) :: L
logical :: Q
c_sizeof(L) == 1
c_sizeof(Q) == 4
! typically
while C uses:
#include <stdbool.h>
#include <stdio.h>
int main(void) {
bool L;
printf("%d\n", sizeof(L));
}
and likewise C++ bool is typically 1 byte:
#include <iostream>
int main(){
bool L;
std::cout << sizeof(L) << "\n";
}
Always use iso_c_binding when using C or C++ with Fortran modules to produce cross-platform compatible projects.
See “bool” examples for interfacing between C, C++ and Fortran.